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