Avatar billede bodyguard Nybegynder
25. juli 2007 - 00:36 Der er 58 kommentarer og
1 løsning

Google maps

Hejsa Eksperter,

Jeg søger en som har styr på Googlemaps og kan hjælpe mig med at opsætte det for mig...

Jeg er villig til at betale lidt penge for det, giv endelig lyd fra jer.


På forhånd tak!
Avatar billede kalp Novice
25. juli 2007 - 00:43 #1
hvad er der, at opsætte?
det kræver en "key" som du ersatter med det den key de selv har anvendt i deres eksempler og så er du kørende.
Avatar billede swiatecki Novice
25. juli 2007 - 02:32 #2
En nærmere beskrivelse ville være rar ;)
Avatar billede bodyguard Nybegynder
25. juli 2007 - 10:36 #3
Som i nok ved kan man indsætte "punkter" på ens map f.eks.
http://www.findvej.dk/
Der har man indsat Metro- og S-togs stationer.

Jeg ønsker samme funktion, dog skal "punkterne" hentes fra en database som levere:
Gadenavn, Gadenr, postnr og ikon(det billede som skal vises på kortet), scriptet skal så selv gå ind finde koordinaterne (lat og lng) ud fra adressen.

Jeg har selv en key og har prøvet at lege med det, men kan ikke helt styre det...
- Jeg vil nemlig også gerne kunne gå til en adresse via QueryString, altså fra en frame til en anden...

I kan se her:
www.GroupG9.dk/GIS/GIScore.asp

:)
Avatar billede kalp Novice
25. juli 2007 - 12:54 #4
swiatecki >> at sætte google map op kræver ingen beskrivelse.. det finder man fint hos dem selv - det er et script hvor nøglen skal ændres til sin egen.

at lave punkter på kortet er en helt anden sag - svært er det ikke, men har desværre ikke tid til, at lave det.

Jeg har lavet en større google løsning, som placere hoteller på google map efter en rejsesøgning. Der lå også en del andre funktioner, men det tog næsten 5 arbejdsdage at lave.
Avatar billede olebole Juniormester
25. juli 2007 - 13:11 #5
<ole>

Hvis du vil sætte en marker i et punkt, skal du kende punktets koordinater. Dem får du ikke lige fra et script. Hvor i JavaScript troede du, de lå?  =)

/mvh
</bole>
Avatar billede bodyguard Nybegynder
25. juli 2007 - 13:43 #6
Kalp>
Det er sgu ærgeligt, hvis du har lavet det, så kan det vel ikke tage andet end en times tid for en ekspert som dig og jeg vil godt kaste lidt "lommepenge" efter det ;)

olebole>
Jeg ved at det kan lade sig gøre, måske via ajax...
Avatar billede kalp Novice
25. juli 2007 - 14:23 #7
bodyguard >>

Jeg fik mine kordinator leveret af en 3 part=)

men du hører lige fra mig senere i dag.
går ud fra du vil have plottet nogle markers ind ud fra  "Gadenavn, Gadenr, postnr"
hvilket betyder jeg lige tjekker deres API i aften og ser om det er noget de leverer.

Jeg ved f.eks Krak levere denne funktionalitet på deres egne kort til 10.000kr om året:S

så det er kun rart hvis google tilbyder dette gratis=)
Avatar billede kalp Novice
25. juli 2007 - 14:32 #8
google maps doesn't provide a geocoding service; that is, you have to provide it with longitude and latitude. This means you need to rely on third-party geocoding tools to get longitude and latitude for an address.
Avatar billede kalp Novice
25. juli 2007 - 14:34 #9
http://developer.yahoo.com/maps/

kan slå op på adresse lader det til
Avatar billede bodyguard Nybegynder
25. juli 2007 - 14:35 #10
Kalp>

Hey, det tror jeg de gør, for selv på mit eksempel kan du indtaste en adresse og så kommer den frem, input type: "gade" "nr", "post nr"

Det ville være lidt ærgeligt at bruge 10 kilo på dette hobby halløj :)
Avatar billede kalp Novice
25. juli 2007 - 14:37 #11
yes.. nu har jeg ikke set google api'et igennem..
kan være det er forældet det jeg fandt før=)

men yahoo har det helt sikkert.

ymaps:Address  string  The street address of the location. Anything Yahoo! Maps is able to recognize as a valid address can be used here.
Avatar billede bodyguard Nybegynder
25. juli 2007 - 14:40 #12
Ok>

Min kan det samme, f.eks. kan jeg nøjes med at skrive Ørestad og så finder den det :)

Meen nu er spørgsmålet så om du kan finde lidt tid til at hjælpe mig :) ?
Avatar billede kalp Novice
25. juli 2007 - 14:41 #13
DOH.. det her hos google maps:P

http://www.google.com/apis/maps/documentation/#Geocoding_Etc

jeg vender tilbage i aften om jeg har tid=)
Avatar billede kalp Novice
25. juli 2007 - 14:43 #14
hehe.. well.. du kan tage kildekoden herfra.. så er du færdig;o)
http://www.google.com/apis/maps/documentation/geocoder.html

ændre "google key"
og så har du det!
Avatar billede bodyguard Nybegynder
25. juli 2007 - 14:46 #15
Det har jeg:

www.GroupG9.dk/GIS/GIScore.asp

Nu mangler jeg bare en (måske dig), som har lidt mere styr på det end mig til at sætte punkterne ind automatisk ud fra databasen, samt at kunne definere ikoner :)
Avatar billede kalp Novice
25. juli 2007 - 14:48 #16
hvad programmere du ved siden af? ASP, PHP , ASP.NET ??
Avatar billede bodyguard Nybegynder
25. juli 2007 - 14:51 #17
Det er ASP ...
Avatar billede kalp Novice
25. juli 2007 - 14:55 #18
okay.. jeg lavede mit i ASP.NET hvilket var super nemt, da javascriptet blev genereret i codebehind filen;)

jeg kan godt hjælpe med det hvis man kan response.write et javascript via. ASP
det mener jeg godt man kan, men det er noget, som jeg først kan teste lidt senere - har ikke adgang til min ftp herfra.

men du kan give mig de sidste detaljer!
er det når siden loader så skal den bare plotte markers ind på kortet, som hentes fra en db?

hvis det er det... så er opgaven forstået.
Avatar billede bodyguard Nybegynder
25. juli 2007 - 15:11 #19
Ja det er korrekt, dog skal markeren være definerbar, også fra databasen.

Samt at det skal være muligt at lave søgning via QueryString, som vil være:
GISmap.asp?gade=xxx&gadenr=000&postnr=0000&ikon=marker.gif

:)
Avatar billede bodyguard Nybegynder
25. juli 2007 - 23:08 #21
Ok, det ser jo godt ud, men vi mangler stadig det med at loade "faste adresser" fra databasen...
Avatar billede kalp Novice
25. juli 2007 - 23:41 #22
hvem har sagt, at det mangler?

http://kalp.dk/google/google.asp

de lægger i en db.

det fungerer sådan her.

Hvis man sender sender parametrer til url'en så skal alle sendes med og hvis ikke de er der så henter den fra databasen.

Hvis man loader siden direkte som linket ovenover så vil den naturligvis bare hente alt fra databasen.

Det er sådan set dét.
Avatar billede bodyguard Nybegynder
26. juli 2007 - 00:42 #23
Frækt :)

Kan du lave det sådan at punkterne også er der når man laver en querystring søgning?

Når du har gjort det, kan jeg så lokke dig til at zippe det og sende det til min email: mjz@groupg9.dk

Så kan vi jo lige forsætte vores dialog der ;)
Avatar billede kalp Novice
26. juli 2007 - 00:44 #24
så punkterne i databasen stadig er der?

sikker ?

det kræver man zoomer ud på kortet så alle punkter kan ses i rammen=)

du kan lige svare - så ser jeg på det i morgen
Avatar billede bodyguard Nybegynder
26. juli 2007 - 11:23 #25
Nu har jeg siddet og kigget på det og jeg tror sgu godt at jeg kan styre dit eksempel...

Så kunne jeg lokke dig til at sende det til mig?
Avatar billede kalp Novice
26. juli 2007 - 11:34 #26
Ja, men det er også ganske overskueligt lavet når først du har kigget lidt på det.
Der står ikke ekstremt meget kode nemlig;D

Jeg kan først sende det i aften når jeg er hjemme - have patience
Avatar billede bodyguard Nybegynder
26. juli 2007 - 16:09 #27
Super, det vil jeg se frem til :)
Avatar billede olebole Juniormester
26. juli 2007 - 20:24 #28
Kan man nu også være helt sikker på, at Nørrebrogade 3599 ligger ved Nørrebros Rundel? Jeg har vist aldrig været i den ende af numrene på Northern Bronx  ;o)

Jeg er vokset op i Jens Munks Gade, hvor ungdomsklubben lå i kælderen under nr. 24 ... gadens højeste nummer og på hjørnet af Østbanegade. Dén adresse bliver fundet rimelig korrekt - men "jens munks gade 1247 2100" bliver placeret cirka mellem nr. 5 på den ene - og nr. 8 på den anden - side af gaden ... hmmmm ...

Google's geocoder virker nogenlunde i mindre kritiske situationer, men til mere seriøse applikationer skal man nok betænke sig. I den forbindelse er Kraks pris på 10.000 pr. år vel heller ikke det store problem
Avatar billede bodyguard Nybegynder
26. juli 2007 - 20:54 #29
Hej Ole,

Nej det er jo det... Meen når det bare er til lidt hobby leg så er det lidt peberet :)

kalp>

Jeg har leget med det du havde liggende online og du kan jo se resultatet... Tak for din hjælp
Avatar billede kalp Novice
26. juli 2007 - 22:33 #30
olebole >> jeg har ikke testet krak's af, men det skulle ikke undre mig, at den er ligeså upræcis i sådan en situation.

og ellers kan man forsøge sig med yahoo's map - de har trods alt haft denne funktionalitet før google.

kraks map er i hvertfald ret sløvt! men nu er de opkøbt at eniro som har et udmærket map selv! så måske ser vi snart et godt kraks map!

bodyguard.. jeg pakker og sender nu
Avatar billede olebole Juniormester
27. juli 2007 - 12:06 #31
kalp >> jamen, det kan jeg så garantere dig, at Krak's naturligvis ikke er - sådan en fejl kan man ikke tage penge for. Og det er findvej.dk i øvrigt heller ikke, da den ikke bygger på Google's, men på Carl Bro's vejdata  ;o)
Avatar billede kalp Novice
27. juli 2007 - 13:15 #32
olebole >> men hvis yahoo maps kan gøre det uden fejl så ville jeg stadig vælge det gratis alternativ=)

vi snakker jo på hobby plan
Avatar billede olebole Juniormester
27. juli 2007 - 14:05 #33
Ja, hvis ... men jeg gider ikke teste  =)
Avatar billede kalp Novice
27. juli 2007 - 14:15 #34
olebole >> jeg gider heller ikke:D
Avatar billede olebole Juniormester
27. juli 2007 - 14:30 #35
Hvis man bruger GClientGeocoder'ens getLocations-metode i stedet, så kan man sammenligne den indtastede adresse med adressen i det returnerede objekt:
    oResult.Placemark.address

Den indeholder ikke noget nummer, hvis det indtastede nummer er 'out of range'  ;o)
Avatar billede kalp Novice
27. juli 2007 - 18:28 #36
lægger i hvertfald et svar så der kan blive lukket her.

og for, at det ikke skal være ulovligt ifølge E's regler kan løsningen hentes her.
http://www.kalp.dk/google/AddressLookUp.zip
Avatar billede kalp Novice
27. juli 2007 - 18:28 #37
og et svar:D
Avatar billede tinem Novice
12. august 2007 - 11:11 #38
Da jeg selv afprøver Google Maps API en del, er jeg da meget interesseret i at se hvad løsningen så blev, men når jeg ser på denne side http://www.groupg9.dk/GIS/GIScore.asp virker det ikke og det vises forskelligt i Explorer 6 og Firefox 2. Er siden blevet flyttet til en anden adresse eller hur?
Avatar billede kalp Novice
12. august 2007 - 11:27 #39
Tinem >> tjah der er ingen som forhindrer dig i, at hente den løsning som jeg har posted i indlæg

Kommentar: kalp
27/07-2007 18:28:17

Den er skam ikke skjult for nogle.
Avatar billede cblayout Nybegynder
13. august 2007 - 23:46 #40
Hejsa - se mit nye site: http://www.gmaps.dk og evt. http://www.spisekortet.info - bare kom an!
Avatar billede kalp Novice
14. august 2007 - 08:54 #41
cblayout >> bare kom an? hvilken udfodring reagere du da på? o_O

angående dit første site... så var jeg på det i 3 sekunder før jeg klikkede mig væk... alt for uoverskueligt.
Avatar billede tinem Novice
14. august 2007 - 09:52 #42
kalp >>Den er skam ikke skjult for nogle.

Nej det har jeg set, men jeg undrede mig bare over at siden http://www.groupg9.dk/GIS/GIScore.asp ikke virkede, da jeg troede du havde hjulpet ham.:-)

Jeg bruger selv PHP MySQL som f.eks. på denne side http://www.tinemuller.dk/googlemap/gaia/tutorial_I.htm som jeg er ved at udbygge, men er interesseret i at studere ALLE Google Maps API sider jeg kan finde, og meget gerne her fra Denmark, hvor der jo ikke er lavet så mange endnu.

Jeg har fulgt med i dette forum i snart et år nu http://groups.google.dk/group/Google-Maps-API/topics?hl=da og ville da ønske at vi kunne lave noget tilsvarende her i Danmark og opfordrede Eksperten den 1.4.07 http://www.eksperten.dk/spm/744792 til at oprette en Kategori, men det var der ikke stemning for på dette tidspunkt, men det kan jo være at det har ændret sig nu, da folk i fremtiden mere og mere vil arbejde med denne teknik?

Jeg ved godt at Google Maps API spænder over flere teknikker f.eks. PHP MySQL, Javascript, XML osv. osv., men hvad nu hvis jeg ville spørge om Google Geocoder for Danmark, som jeg IKKE synes viser koordinaterne så godt som Peter Brodersens http://www.findvej.dk/, hvilken Kategori skulle jeg så stille mit spørgsmål i?
Avatar billede kalp Novice
14. august 2007 - 10:07 #43
tinem >> pt. bør man nok placere sine google spørgsmål i JavaScript katagorien. I spørgsmålsoversigten kigger jeg f.eks på titler og ikke katagorier. De titler, som siger mig noget klikker jeg mig ind på og andre må have det lidt på samme måde.

Ulempen ved ikke, at kende den rette katagori er, at placere man sit spørgsmål i et forkert sted er det ikke sikkert eksperten på netop du der bliver spurgt til finder spørgsmålet.

Jeg abonnere f.eks på .NET og C# katagorierne... dvs. modtager mails hvis der kommer nyt der. Dermed ikke sagt at jeg er ekspert i de katagorier, men det er der jeg foretrækker, at svare på spørgsmål:)

Angående, at hans link ikke fungerer mere så er det ikke rigtig noget vi kan gøre noget ved her..
Men min løsning skal være tilgængelig for andre... ikke for evigt, men et stykke tid endnu:)
Avatar billede tinem Novice
14. august 2007 - 10:51 #44
kalp >>Men min løsning skal være tilgængelig for andre... ikke for evigt, men et stykke tid endnu:)

Det var da pænt af dig at give disse koder til download, men da jeg ikke kan bruge ASP på mit webhotel mere og heller ikke bruger det offline, kan jeg ikke teste hvad denne fil kan vise. Ville det være muligt at du kunne vise denne fil på dit webhotel?:-)
Avatar billede kalp Novice
14. august 2007 - 10:56 #45
Det er angivet i mit indlæg

Kommentar: kalp
25/07-2007 20:35:18
Avatar billede tinem Novice
14. august 2007 - 11:20 #46
Ja, du må undskylde, hvis det er mig som ikke forstår noget, men dette kort http://kalp.dk/google/google.asp er altså helt tomt og det var vel ikke meningen, vel?
Avatar billede kalp Novice
14. august 2007 - 12:27 #47
Det er ikke tomt hos mig:)
Avatar billede cblayout Nybegynder
15. august 2007 - 09:25 #48
Ja, det er jo ikke alle, som har tid eller lyst (råd) til at "nørde" med skidtet selv, hvorfor jeg kan tilbyde at udføre de allerfleste opgaver med Google Maps med baggrund i Google Maps Api for penge, som de fleste kan betale - hvad det var, det oprindelige spørgsmål gik ud på.

http://www.gmaps.dk vil selvfølgelig blive opdateret og justeret løbende for bedst mulig overskuelighed og kundevenlighed, da sitet er helt nyt og "stofområdet" er nyt og ubeskrevet i Danmark også.

Vedr. geocoding i DK synes jeg, at det er ret nøjagtigt og det er muligt at justere "markere" meget præcist. Men, hvis du skal lave en "ruteplan", vil det altid være nærmeste registrede adresse, der peges på. Eksempelvis kan der ikke peges til baghusadresser eller "koteletgrunde".

Unøjagtighederne kommer generelt af antallet af decimaler i geokoderne, som er grader, minuter og sekunder omregnet til decimaltal. Men hvis du gennemgår Google Maps Api eksempler er der tutoritals, hvor du kan placere marker manuelt og læse geokoden med flere decimaler.

vedr. datalister for adresser og geocoder, html m.v. til infovinduer m.v., vil jeg varmt anbefale .xml, som "hænger sammen" med Exel. Exel kan "læse" de fleste exportformater fra eksisterende databaser og er derfor et udmærket og brugervenligt system at arbejde med, hvis man ikke er til "hardcoding" og har større mængder af adresser - og vil "gør det selv".

Det er også vigtigt at vide - for jer der arbejder med databaser - at geokoderne skal ligge i databaserne og, at det ikke kan nytte at lade et script geocode, hver gang et kort skal genereres. Det bruger meget computerkraft og tager en del tid - min. 1 sek. pr. adresse.

Fortsat go' fornøjelse med eksperimenterne - og jo, jeg tager en hvilken som helst udfordring med gmaps.

Snart vil et lille cms, som kan vedligeholde Google Maps datalister kunne tilbydes, som jeg er ret sikker på, at der vil komme addons til mange cms'er, som kan skidtet.

Hilsen
Claus
Avatar billede olebole Juniormester
15. august 2007 - 14:05 #49
Det eneste sted, en geocode-request bruger meget computerkraft, er hos Google. Det er et ganske lille arbejde for klienten - så dét er i hvertfald ikke et argument  ;o)
Avatar billede tinem Novice
16. august 2007 - 10:18 #50
Jeg har oprettet et nyt spørgsmål http://www.eksperten.dk/spm/791939, som jeg håber at I ser og kan hjælpe med, da det lyder som om I har forstand på Google Maps API. :-)
Avatar billede cblayout Nybegynder
16. august 2007 - 12:48 #51
At generere en geocode tager min. 1 sek. - altså 50 coder 50 sekunder. Jo flere coder du skal generere, jo længere tid, skal du sætte svartiden til. Sidst, er en af begrænsningerne i brug af Google Maps Api max. 50.000 codninger i døgnet - ikke at det kan betyde noget for de allerfleste, men alligevel. Overskrides denne begrænsning lukkes kortet for adgang i et døgn.
Derfor kan jeg ikke anbefale codning "on the fly" af større adressemængder med mindre der bruges en ikke google løsning for geocode.
Hilsen
Claus http://www.gmaps.dk
Avatar billede olebole Juniormester
16. august 2007 - 15:44 #52
Claus >> Det er imod Ekspertens regler at bruge links i sin signatur  =)

Jeg er ikke uenig i, at det ikke er en god måde at skaffe store adressemængder på - bortset fra, at jeg med en ret langsom forbindelse ikke kan presse tiden op på mere end 0,7 sekund ved et enkelt kald.

Det, der var min hovedpointe, var dog, at det ikke passer, at en geocode-request skulle bruge 'meget computerkraft'. Sådan en request er ganske lille og kræver et absolut minimum af CPU/RAM på klienten  ;o)
Avatar billede cblayout Nybegynder
16. august 2007 - 16:40 #53
Dette script kan geocode mange adresser på én gang med et delay på 1,75 sek. som kan justeres - udskyld for signaturen:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Google Maps</title>
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA3qyl_FEhGYSK9pSjzs-SVBRRmxvsDchdZPynv1Lw2iDuExpu_hRedE5TdRiy6czrOuJj2d3qm2FCLA" type="text/javascript"></script>
  </head>
  <body onunload="GUnload()">

   
    <div id="message">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>&lt;markers&gt;<br></div>


    <script type="text/javascript">
    //<![CDATA[
   
    if (GBrowserIsCompatible()) {

     
      // ====== Create a Client Geocoder ======
      var geo = new GClientGeocoder();

      // ====== Array for decoding the failure codes ======
      var reasons=[];
      reasons[G_GEO_SUCCESS]            = "Success";
      reasons[G_GEO_MISSING_ADDRESS]    = "Missing Address: The address was either missing or had no value.";
      reasons[G_GEO_UNKNOWN_ADDRESS]    = "Unknown Address:  No corresponding geographic location could be found for the specified address.";
      reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Unavailable Address:  The geocode for the given address cannot be returned due to legal or contractual reasons.";
      reasons[G_GEO_BAD_KEY]            = "Bad Key: The API key is either invalid or does not match the domain for which it was given";
      reasons[G_GEO_TOO_MANY_QUERIES]  = "Too Many Queries: The daily geocoding quota for this site has been exceeded.";
      reasons[G_GEO_SERVER_ERROR]      = "Server error: The geocoding request could not be successfully processed.";
      reasons[403]                      = "Error 403: Probably an incorrect error caused by a bug in the handling of invalid JSON.";
     
      // ====== Geocoding ======
      function getAddress(search, next) {
        geo.getLocations(search, function (result)
          {
            // If that was successful
            if (result.Status.code == G_GEO_SUCCESS) {
              // Lets assume that the first marker is the one we want
              var p = result.Placemark[0].Point.coordinates;
              var lat=p[1];
              var lng=p[0];
              // Display the results in XML format
              var xml = '&nbsp;&nbsp;&lt;marker address="' + search + '" lat="' +lat+ '" lng="' +lng+ '"&gt;<br>';
              document.getElementById("message").innerHTML += xml;
            }
            // ====== Decode the error status ======
            else {
              var reason="Code "+result.Status.code;
              if (reasons[result.Status.code]) {
                reason = reasons[result.Status.code]
              }
                var xml = '&nbsp;&nbsp;&lt;marker address="' + search + '" error="' +reason+ '"&gt;<br>';
                document.getElementById("message").innerHTML += xml;
            }
            next();
          }
        );
      }



      // ======= An array of locations that we want to Geocode ========
      var addresses = [
                "1060 West Addison Street, Chicago, IL",
                "99, rue de Rivoli, Paris 75001",
                "Oder, DE",
                "Piazza della Scala, Milano 20121",
                "London, UK",
                "1600 Pennsylvania Avenue, Washington, DC",
                "A totally bogus address"
      ];

      // ======= Global variable to remind us what to do next
      var nextAddress = 0;

      // ======= Function to call the next Geocode operation after a delay of 1.725 sconds

      function theNext() {
        if (nextAddress < addresses.length) {
          setTimeout('getAddress("'+addresses[nextAddress]+'",theNext)', 1725);
          nextAddress++;
        } else {
          document.getElementById("message").innerHTML += "&lt;/markers&gt;";
        }
      }

      // ======= Call that function for the first time =======
      theNext();
 


    }
   
    // display a warning if the browser was not compatible
    else {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }

 

    //]]>
    </script>
  </body>

</html>
Avatar billede olebole Juniormester
16. august 2007 - 17:08 #54
Ja, du sætter den jo selv til 1,725 sekunder - men hvorfor det? Hvorfor ikke lade den hente en ny adresse, så snart den foregående er returneret?

Det smarteste ville dog være at lave det som et objekt, der kan hente en adresse og smide den ind i noget markup. Så kunne du have et array til at opbevare dem i - og sætte en max-længde på array'et ... f.eks. 20.
Sålænge array'et ikke er 20 pladser langt, instantieres et objekt, der henter en adresse - og som pushes i slutningen af array'et.
Når et objekt får returneret en adresse, skrives den ind i markupen og objektet destrueres og fjernes fra array'et.

På den måde har du altid 20 aktive requests igang. Da det er så små pakker, der sendes og modtages - og den enkelte request ikke bruger synderlige resourcer - kan du uden tvivl have mange flere kørende ... men man skal jo heller ikke tirre Google unødigt  ;o)
Avatar billede olebole Juniormester
16. august 2007 - 18:43 #55
Det her kører en 'anelse' hurtigere  ;o)

<pre id="message">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;markers&gt;
</pre>


<script type="text/javascript">
if (GBrowserIsCompatible()) {
    var reasons=[];
    reasons[G_GEO_SUCCESS]            = "Success";
    reasons[G_GEO_MISSING_ADDRESS]    = "Missing Address: The address was either missing or had no value.";
    reasons[G_GEO_UNKNOWN_ADDRESS]    = "Unknown Address:  No corresponding geographic location could be found for the specified address.";
    reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Unavailable Address:  The geocode for the given address cannot be returned due to legal or contractual reasons.";
    reasons[G_GEO_BAD_KEY]            = "Bad Key: The API key is either invalid or does not match the domain for which it was given";
    reasons[G_GEO_TOO_MANY_QUERIES]  = "Too Many Queries: The daily geocoding quota for this site has been exceeded.";
    reasons[G_GEO_SERVER_ERROR]      = "Server error: The geocoding request could not be successfully processed.";
    reasons[403]                      = "Error 403: Probably an incorrect error caused by a bug in the handling of invalid JSON.";
   
    function getUniq(nLen) {
        nLen = typeof nLen=="number" ? nLen : 8;
        var a = [], c = "9876543210abcdefghijklmnopqrstuvwxy0123456789";
        nClen = c.length;
        for (var i=0; i<nLen; i++) a[i] = c.charAt( Math.floor(Math.random()*nClen) );
        return a.join("");
    }
   
    function GeoCoderObject() {
        this.id = "GeoObj_" + getUniq() + GeoCoderObject.nGeoCounter++;
        this.onRecieve = function(){};
        this._oGeoCoder = new GClientGeocoder();
        return this;
    }
    GeoCoderObject.nMaxObjects = 20; // Maximalt antal af samtidige request-objekter
    GeoCoderObject.nGeoCounter = 0;
    GeoCoderObject.oGeoCoders = {};
    var _p = GeoCoderObject.prototype;
    _p.getAddress = function(search) {
        var xml = "", me = this;
        this._oGeoCoder.getLocations(search, function (result) {
            // If that was successful
            if (result.Status.code == G_GEO_SUCCESS) {
                // Lets assume that the first marker is the one we want
                var p = result.Placemark[0].Point.coordinates;
                var lat=p[1];
                var lng=p[0];
                // Display the results in XML format
                xml = '\u00a0\u00a0\u003cmarker address="' + search + '" lat="' +lat+ '" lng="' +lng+ '"\u003e\r';
            }
        // ====== Decode the error status ======
            else {
                var reason="Code "+result.Status.code;
                if (reasons[result.Status.code]) {
                    reason = reasons[result.Status.code]
                }
                xml = '\u00a0\u00a0\u003cmarker address="' + search + '" error="' +reason+ '"\u003e\r';
            }
            me.onRecieve(xml, me.id);
            result = xml = null;
        });
    }
    _p.destroy = function() {
        for (var x in this) if (x!="destroy") this[x] = null;
        this.destroy = null;
    }

    var addresses = [
        "1060 West Addison Street, Chicago, IL",
        "99, rue de Rivoli, Paris 75001",
        "Oder, DE",
        "Piazza della Scala, Milano 20121",
        "London, UK",
        "1600 Pennsylvania Avenue, Washington, DC",
        "A totally bogus address"
    ];
    function writeAddress(sXml, sId) {
        document.getElementById("message").firstChild.nodeValue += sXml;
        GeoCoderObject.oGeoCoders[sId].destroy();
        GeoCoderObject.oGeoCoders[sId] = null;
        delete GeoCoderObject.oGeoCoders[sId];
        GeoCoderObject.nGeoCounter--;
        if (addresses.length==0 && GeoCoderObject.nGeoCounter==0) {
            document.getElementById("message").firstChild.nodeValue += "\u003c/marker\u003e";
        }
        else loadGeoCoders();
    }
    function loadGeoCoders() {
        var o = null;
        while (addresses.length>0 && GeoCoderObject.nGeoCounter<=GeoCoderObject.nMaxObjects) {
            o = new GeoCoderObject();
            o.onRecieve = writeAddress;
            GeoCoderObject.oGeoCoders[o.id] = o;
            o.getAddress(addresses.shift());
        }
    }
   
    loadGeoCoders();
   
} else { // display a warning if the browser was not compatible
    alert("Sorry, the Google Maps API is not compatible with this browser");
}
</script>
Avatar billede olebole Juniormester
16. august 2007 - 18:45 #56
- og så bruger det ikke innerHTML, som jo slet ikke giver mening i et XHTML-dokument  =)
Avatar billede olebole Juniormester
16. august 2007 - 18:50 #57
- men hvorfor i øvrigt gemme i XML? JSON fylder langt mindre - er native og derfor væsentligt lettere at anvende i JavaScript - og så er det formatet, GoogleMaps i forvejen bruger
Avatar billede clus Nybegynder
17. september 2007 - 14:47 #58
hvordan virker de koder?

jeg har selv 200 dk adresser som jeg skal have geocodet

jeg har brugt denne http://www.batchgeocode.com/

men den er desværre helt ud i hampen på nogen adresser - ex smider den flere dk adresser helt udenfor europa

er der nogen der kan hjælpe?
Avatar billede clus Nybegynder
17. september 2007 - 14:48 #59
ps jeg kører det hele via php oh en mysql db
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