Avatar billede elmoe Juniormester
26. november 2009 - 18:48 Der er 7 kommentarer og
1 løsning

JavaScript, Google map identificer markere

Hej eksperter.

Jeg er ved at udvikle en Google Maps JavaScript applikation. Jeg har vha. JavaScript genereret et kort hvor jeg har centreret viewet til at vise hele Danmark. Jeg har gemt adressedata i et array (addressArray). Arrayet bliver brugt til at finde ud af hvor hver enkelt adresse skal placeres på kortet. Dette virker fint. Jeg er også i stand til at vise en tekst ud for hver enkelt marker på kortet, når der klikkes på en den.

Nu til problemet.
Når brugeren klikker på en bestemt marker, vil jeg gerne vise præcis hvad det er for en adresse. Jeg kan godt få hver enkelt tekst frem. De bliver bare ikke plaveret de rigtige steder. I eksemplet herunder bliver en adresse i Kolding f.eks. placeret på en marker som er placeret i Odense osv.

Hvordan får jeg nedenstående kode rettet, så jeg kan vise hver adresse fra arrayet ved den rigtige marker?

Linien "map.openInfoWindow(marker.getLatLng(), addressArray[i - 1]);" viser ikke adressen ved den marker den skal fordi jeg bruger variablen "i" som er den der tæller en op sammen med mit loop. Hvis jeg i stedet vidste hvordan jeg kunne sørge for det var den rigtige marker der fik teksten.

Hvordan kan jeg ændre koden, så den gør det?

function displayTypemap(addressArray)
{
    //Initialize the map
    initialize();
   
    var gmarkers = [];
   
    if (addressArray.length == 0)
    {
        //alert("No data.");
    }
    else
    {
        if (geocoder)
        {
            for (i = 0; i <= addressArray.length - 1; i++)
            {
                geocoder.getLatLng(addressArray[i], function(latlng)
                {
                    if (!latlng)
                    {
                        alert(addressArray[i] + " not found");
                    }
                    else
                    {
                        //Make new marker object
                        var marker = new GMarker(latlng);
                       
                        //Add marker object to map
                        map.addOverlay(marker);
                       
                        //Make a marker listener
                        GEvent.addListener(marker, "click", function(overlay, latlng)
                        {
                            //Create a textnode when user clicks on a marker
                            map.openInfoWindow(marker.getLatLng(), addressArray[i - 1]);
                        });
                    }
                } );
            }
        }
    }
}
Avatar billede elmoe Juniormester
26. november 2009 - 23:26 #1
Det kan måske være en idé at gå ind på Google playground og klikke på "Maps API" for at se eksempler på Google Maps kode:
http://code.google.com/apis/ajax/playground/

Jeg kan desværre ikke finde ud af, hvad det er jeg skal rette i min kode for at få vist den rigtige adressetekst når der klikkes på en af mine markers. Håber at én af jer eksperter kan?
Avatar billede elmoe Juniormester
26. november 2009 - 23:44 #2
Tjek evt. dette screenshot af mit kort for at forstå hvad der er galt:

http://www.limer.dk/adresse_placeret_ved_forkert_marker.jpg

Som I kan se står der Rønne når jeg klikker på den marker, hvor der burde stå Århus. Der bliver altså ikke vist den rigtige tekst når der klikkes på en marker, fordi jeg ikke ved hvordan jeg skal vælge den rigtige fra mit array.
Avatar billede intenz Novice
28. november 2009 - 18:11 #3
Det er lidt svært at sige entydigt. Men kan du ikke prøve at teste hvilket 'i' nummer den bruger til at sætte markeren på og hvilket den bruger når den viser adressen.

Altså bare med alert(i); under hhv. //Make new marker object og //Create a textnode when user clicks on a marker

Så bør du kunne se om id'et passer med det, som det bør være.
Avatar billede elmoe Juniormester
01. december 2009 - 22:26 #4
Det er ikke nødvendigt at teste det med en alert(i). Den bruger jo bare det næste nummer i rækken når der bliver lagt en til variablen i. Hvis jeg på en måde kunne finde ud af hvilken adresse det var der blev sat en marker på og så ud fra det vælge den adresse der svarede til det i mit array, så ville problemet være løst. Det ved jeg desværre bare ikke hvordan jeg kan gøre?
Avatar billede intenz Novice
02. december 2009 - 22:19 #5
Det er ikke sådan jeg læser din kode.
Du henter din længde/breddegrad ud med:
geocoder.getLatLng(addressArray[i], function(latlng)

Og henter din adresse ud med:
addressArray[i - 1]);

Så første gang er i=0 på latlng og adressen i=-1 osv.

Det er måske meningen?
Avatar billede elmoe Juniormester
03. december 2009 - 10:03 #6
Du har ret. Jeg har prøvet det andet, og det er slet ikke der problemet ligger. Jeg får stadig en forkert tekst vist ved mine markers.
Avatar billede tinem Novice
06. december 2009 - 11:45 #7
Det ville jo gøre det meget nemmere for os at hjælpe dig hvis du linkede til dit site så vi kan tjekke i Firefox/Firebug hvad problemet evt. kunne være samt se koderne.
Avatar billede elmoe Juniormester
27. december 2009 - 11:27 #8
Trækker spørgsmålet tilbage. Håber det er okay. Der har desværre ikke været nogle brugbare svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester