/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Google Map hide xml marker
Fra : Claus


Dato : 04-09-08 14:49

Nej NG

Jeg vil høre om der er nogle der kan hjælpe med dette Javascript
problem.
Jeg har et Google map hvor jeg udover en alm marker laver nogle
marker fra en xml fil, dette virker også fint, jeg har så gjort
så det er muligt at fjerne og tilføje dem hvilket også virker
fint, mit problem ligger i at jeg vil have at de marker fra xlm
filen først bliver sygnelige når men marker tilhørende checkbox,
jeg har forsøgt at indsæte marker.hide() function og alle på nær
den sidste marker i xml flien bliver skjuld, jeg er ikke så god
til javascript, så det er sikert bare en forkert placering.
Mit script til marker fra xml filen ser sådan ud.

GDownloadUrl("markerdata.xml", function(data) {
var xml = GXml.parse(data);
var markers =
xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var type = markers[i].getAttribute("type");
var point = new
GLatLng(parseFloat(markers[i].getAttribute("lat")),

parseFloat(markers[i].getAttribute("lng")));
var marker = createMarker(point, name, address,
type);
map.addOverlay(marker);
}
});

function createMarker(point, name, address, type) {
var marker = new GMarker(point, customIcons[type]);
markerGroups[type].push(marker);

var html = "<b>" + name + "</b> <br/>" + address;
GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html);
});
//dette skjuler alle på nær den sidste marker!
for (var i = 0; i < markerGroups[type].length; i++) {
var marker = markerGroups[type][i];
marker.hide();
//
}
return marker;
}
function toggleGroup(type) {
for (var i = 0; i < markerGroups[type].length; i++) {
var marker = markerGroups[type][i];
if (marker.isHidden()) {
marker.show();
} else {
marker.hide();
}
}
}

live demo:
http://www.houseinchiangmai.net/test/map.asp?lat=18.800500&lng=98
..957528

/Claus

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Birger Sørensen (04-09-2008)
Kommentar
Fra : Birger Sørensen


Dato : 04-09-08 15:26

Claus forklarede den 04-09-2008:
> Nej NG
>
> Jeg vil høre om der er nogle der kan hjælpe med dette Javascript
> problem.
> Jeg har et Google map hvor jeg udover en alm marker laver nogle
> marker fra en xml fil, dette virker også fint, jeg har så gjort
> så det er muligt at fjerne og tilføje dem hvilket også virker
> fint, mit problem ligger i at jeg vil have at de marker fra xlm
> filen først bliver sygnelige når men marker tilhørende checkbox,
> jeg har forsøgt at indsæte marker.hide() function og alle på nær
> den sidste marker i xml flien bliver skjuld, jeg er ikke så god
> til javascript, så det er sikert bare en forkert placering.
> Mit script til marker fra xml filen ser sådan ud.
>
> GDownloadUrl("markerdata.xml", function(data) {
> var xml = GXml.parse(data);
> var markers =
> xml.documentElement.getElementsByTagName("marker");
> for (var i = 0; i < markers.length; i++) {
> var name = markers[i].getAttribute("name");
> var address = markers[i].getAttribute("address");
> var type = markers[i].getAttribute("type");
> var point = new
> GLatLng(parseFloat(markers[i].getAttribute("lat")),
>
> parseFloat(markers[i].getAttribute("lng")));
> var marker = createMarker(point, name, address,
> type);
> map.addOverlay(marker);
> }
> });
>
> function createMarker(point, name, address, type) {
> var marker = new GMarker(point, customIcons[type]);
> markerGroups[type].push(marker);
>
> var html = "<b>" + name + "</b> <br/>" + address;
> GEvent.addListener(marker, 'click', function() {
> marker.openInfoWindowHtml(html);
> });
> //dette skjuler alle på nær den sidste marker!
> for (var i = 0; i < markerGroups[type].length; i++) {
> var marker = markerGroups[type][i];
> marker.hide();
> //
> }
> return marker;
> }
> function toggleGroup(type) {
> for (var i = 0; i < markerGroups[type].length; i++) {
> var marker = markerGroups[type][i];
> if (marker.isHidden()) {
> marker.show();
> } else {
> marker.hide();
> }
> }
> }
>
> live demo:
> http://www.houseinchiangmai.net/test/map.asp?lat=18.800500&lng=98
> .957528
>
> /Claus

Uden at have spor forstand på googlemaps - og ikke have rigtig lyst til
at sætte mig ind i det, lige nu i hvert fald - så er der umiddelbart
noget forkert, som ikke er rigtigt...

Du henter dine markere fra XML.
For hver af dem opretter du en marker - funktionen createMarker(...).
Men når du gør det, gennemgår du arrayet, og kalder hide() på hver af
dem du allerede har oprettet...
Det handler om det her
> //dette skjuler alle på nær den sidste marker!
> for (var i = 0; i < markerGroups[type].length; i++) {
> var marker = markerGroups[type][i];
> marker.hide();
> //
og det hører ikke umiddelbart til, i createMarker().
Enten skal løkken flyttes ud efter de andre rutiner, eller også skal
den erstattes af blot et kald til marker.hide().

Som det er, kan du ikke være sikker på at den "marker" du netop har
created, også er den der bliver returneret.
Det er kun den rigtige, fordi den nye også er den sidst tilføjede til
arrayet. Hvis der var en sortering tilknyttet push, ville det ikke være
sådan...

Jeg er ikke sikker på at ovenstående løser dit problem - men det er i
hvert fald noget du bør rette...

Birger



Birger Sørensen (04-09-2008)
Kommentar
Fra : Birger Sørensen


Dato : 04-09-08 15:34

Efter mange tanker skrev Claus:
> Nej NG
8X

Bare en kommentar.
Der må være andet galt også. Klikker man på golfen, siger den:
Pan Africa Market
1521 1st Ave, Seattle, WA
- og hvis det er rigtigt, er der lavet en del om på geografien, siden
jeg gik ud af skolen...

Birger



Claus (04-09-2008)
Kommentar
Fra : Claus


Dato : 04-09-08 17:08

Birger Sørensen wrote in dk.edb.internet.webdesign.clientside:
> Efter mange tanker skrev Claus:
> > Nej NG
> 8X
>
> Bare en kommentar.
> Der må være andet galt også. Klikker man på golfen, siger den:
> Pan Africa Market
> 1521 1st Ave, Seattle, WA
> - og hvis det er rigtigt, er der lavet en del om på geografien, siden
> jeg gik ud af skolen...
>
> Birger
>
>
det er stadig under test, og "golf" er ikke den rigtige placering eller
text:) det er pt. skoler jeg først skal have til at virke.

med hensyn til min kode, er det rigtigt at jeg har lavet en marker.hide
efter den er oprettet, du skriver at jeg skal flytte den ud og kalde den
sener, jeg har den faktisk allrede, function toggleGroup, men jeg er ikke
klarover hvordan jeg kan kalde den uden at marker check boksen.

/Claus

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Claus (04-09-2008)
Kommentar
Fra : Claus


Dato : 04-09-08 17:47

Claus wrote in dk.edb.internet.webdesign.clientside:
> Nej NG
>
> Jeg vil høre om der er nogle der kan hjælpe med dette Javascript
> problem.
> Jeg har et Google map hvor jeg udover en alm marker laver nogle
> marker fra en xml fil, dette virker også fint, jeg har så gjort
> så det er muligt at fjerne og tilføje dem hvilket også virker
> fint, mit problem ligger i at jeg vil have at de marker fra xlm
> filen først bliver sygnelige når men marker tilhørende checkbox,
> jeg har forsøgt at indsæte marker.hide() function og alle på nær
> den sidste marker i xml flien bliver skjuld, jeg er ikke så god
> til javascript, så det er sikert bare en forkert placering.
> Mit script til marker fra xml filen ser sådan ud.
>
> GDownloadUrl("markerdata.xml", function(data) {
> var xml = GXml.parse(data);
> var markers =
> xml.documentElement.getElementsByTagName("marker");
> for (var i = 0; i < markers.length; i++) {
> var name = markers[i].getAttribute("name");
> var address = markers[i].getAttribute("address");
> var type = markers[i].getAttribute("type");
> var point = new
> GLatLng(parseFloat(markers[i].getAttribute("lat")),
>
> parseFloat(markers[i].getAttribute("lng")));
> var marker = createMarker(point, name, address,
> type);
> map.addOverlay(marker);
> }
> });
>
> function createMarker(point, name, address, type) {
> var marker = new GMarker(point, customIcons[type]);
> markerGroups[type].push(marker);
>
> var html = "<b>" + name + "</b> <br/>" + address;
> GEvent.addListener(marker, 'click', function() {
> marker.openInfoWindowHtml(html);
> });
> //dette skjuler alle på nær den sidste marker!
> for (var i = 0; i < markerGroups[type].length; i++) {
> var marker = markerGroups[type][i];
> marker.hide();
> //
> }
> return marker;
> }
> function toggleGroup(type) {
> for (var i = 0; i < markerGroups[type].length; i++) {
> var marker = markerGroups[type][i];
> if (marker.isHidden()) {
> marker.show();
> } else {
> marker.hide();
> }
> }
> }
>
> live demo:
> http://www.houseinchiangmai.net/test/map.asp?lat=18.800500&lng=98
> ..957528
>
> /Claus
>
> --

Jeg fik løse problemet, skjulte den under oprettelse af marker,
istedet for at skjule den bagefter.

GDownloadUrl("markerdata.xml", function(data) {
var xml = GXml.parse(data);
var markers =
xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var type = markers[i].getAttribute("type");
var point = new
GLatLng(parseFloat(markers[i].getAttribute("lat")),

parseFloat(markers[i].getAttribute("lng")));
var marker = createMarker(point, name, address, type);
map.addOverlay(marker);
//Hide marker
marker.hide();

/Claus

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste