28. november 2008 - 17:51Der er
101 kommentarer og 2 løsninger
google maps kort med fejl som jeg ik kan finde eller forstå
Hejsa, jeg har lavet et kort med alle erhvervskunderne på min side og det virker som sådan ok, lige bortset fra at det ikke er alle firmaerne som får en nål på kortet. Jeg har så testet lidt for at finde ud af hvorfor nogle af dem ikke er med.
og jeg har fundet ud af at flere firmaer dukker op når jeg laver en alert() ved de firmaer som google maps ikke kan finde. Underligt. Her er forandringen jeg laver med php GET:
function AddressPoint(address,txt_str,firmanavn_title) { if (geocoder) { geocoder.getLatLng( address, function(point){ if (point){ map.addOverlay(createMarker(point, txt_str, firmanavn_title)); } else { <?php if (!$_GET["med_alert"]){echo"//";} ?>return alert(address + " ikke fundet"); } } ); } }
Der kan være flere årsager. Nogle af adresserne kender krak.dk heller ikke - og en adresse på Jylandsvej er det jo f.eks. ret oplagt, Google ikke kan finde ;o)
Hvis du bygger søgningen på adresser, du ikke selv har indtastet, men i stedet bruger en form for tilmelding, kunne du validere adressen lige efter tilmeldingen (onchange på tekstfeltet/-felterne).
Du kunne begynde med at sætte en variabel 'bTriedOnce' til false i begyndelsen af dokumentet. Kan adressen ikke findes efter indtastning - og bTriedOnce er false - alert'es brugeren: "Tjek venligst, om adressen er korrekt." - og bTriedOnce sættes til true. Hvis adressen ikke kan findes - og bTriedOnce er true - indsættes alligevel i databasen og der sendes en mail til dig selv om manuelt at tjekke adressen.
På den måde alert'es brugeren kun én gang, så det ikke bliver irriterende =)
jep det var en god ide. Jeg har faktisk startet på at lave noget lignende det du beskriver :o)
Men jeg har også fundet ud af at mange af de adresser som bliver afvist som "ugyldige" eller "umulige at finde" faktisk sagtens kan findes på google maps. Jeg bruger akkurat samme adresse og mange af dem findes uden problemer. Så der må være en fejl. Bare lige med at finde den.
nej for der er også nogen med alm tegne som glipper. og det ser mere ud til at forekomme i grupper. Og oftere jo længere nede man kommer... Underligt :)
Erik >> Måske, men der findes adresser med specialtegn. Kommer alle adresser fra samme kilde, er det ikke sandsynligt - kommer de fra forskellige, er det absolut en mulighed =)
(28/11-2008 22:11:09) >> aha ... interessant! Måske, der går ged i noget, fordi du sender formange queries på for kort tid - eller serveren har for travlt i dét splitsekund(?)
Prøv at samle de ikke fundne op i et array og løb det derefter igennem og send de samme queries én gang mere. Hvad sker der ved det?
- og tjek lige alle adresser. Der var som sagt et par af dem, jeg testede på Krak, som heller ikke kunne findes dér. Oplagt er naturligvis sdavøfajl, som den jeg viste før, men der kan sikkert også være andre grunde =)
hmmm jeg har prøvet at opdatere siden http://www.huggernet.dk/pgs/links.php?vis_firmaer=1 nogle gange og kigge nøje efter hvilke som har ugyldig adresse. og det overrasker mig at det er forskelligt fra gang til gang hvilke adresser som bliver afvist. hehe :o) dete r dæleme en underlig fejl :o)
aha okay. god løsning. jeg må lige prøve om jeg kan finde ud af det. javascript er ikke min stærke side, men det kan vel ik være så svært :o) Bliver spændende at se om det virker :o)
Og så kunne man også overveje at slå adressen op een eneste gang og finde længde-/breddegrad, putte det i databasen, og pludselig, som ren magi, ren Harry Potter, få en hurtig applikation.
var aNotFound = []; var nMaxQueries = 6; function AddressPoint(address,txt_str,firmanavn_title,brugers_id) { if (geocoder) { geocoder.getLatLng( address, function(point){ if (point){ map.addOverlay(createMarker(point, txt_str, firmanavn_title)); } else { aNotFound.push([address, txt_str, firmanavn_title, brugers_id]) } } ); } }
function CheckAgain() { var a = aNotFound.concat(""); aNotFound = []; for (var i=0,j=a.length; i<j; i++) { if (nMaxQueries==1){ closeobj("driving_" + a[3]); // fjerner kørselsvejledning openobj_inline("confirm_" + a[3]); // viser link til 'ret adressen' i stedet for kørselsvejledning <?php if (!$_GET["med_alert"]){echo"//";} ?>return alert(a[0] + " ikke fundet"); // så webmaster kan teste } else { AddressPoint(a[0], a[1], a[2], a[3]); } } if (aNotFound.length>0 && --nMaxQueries>0) CheckAgain(); }
var point = null; AddressPoint("Vejnavn 111, postnr og by, land", "Firmanavn og adresse osv", "Firmanavn","282"); og mange flere.......
// Den tester lige de adresser som umiddelbart ikke gav pote if (aNotFound.length > 0){ CheckAgain(); }
jo men jeg gør noget andet. jeg sætter 'nMaxQueries til 6 og så skal den sidste runde fjerne en kørselsvejledning ved at hide link til kørselsvejledning. for så er adressen jo nok ugyldig
det har ikke hjulpet for jeg ved at der er ugyldige adresser som skulle resultere i at aNotFound.length ender med at være mere end 0. ellers er der noget den gør forkert.
// funktion til geocoder var aNotFound = []; var nMaxQueries = 6; function AddressPoint(address,txt_str,firmanavn_title,brugers_id) { if (geocoder) { geocoder.getLatLng( address, function(point){ if (point){ map.addOverlay(createMarker(point, txt_str, firmanavn_title)); } else { aNotFound.push([address, txt_str, firmanavn_title, brugers_id]) } } ); } } // Denne tjekker endnu en gang de mislykkedes forsøg på at finde adresserne function CheckAgain() { var a = aNotFound.concat(""); aNotFound = []; for (var i=0,j=a.length; i<j; i++) { if (nMaxQueries==1){ closeobj("driving_" + a[3]); // fjerner kørselsvejledning openobj_inline("confirm_" + a[3]); // viser link til 'ret adressen' i stedet for kørselsvejledning <?php if (!$_GET["med_alert"]){echo"//";} ?>return alert(a[0] + " ikke fundet"); // så webmaster kan teste } else { AddressPoint(a[0], a[1], a[2], a[3]); } } if (aNotFound.length>0 && --nMaxQueries>0) CheckAgain(); }
if (aNotFound.length>0 && --nMaxQueries>0) CheckAgain(); else alert("Kunne ikke finde disse "+a.length+" adresser:\n---------------------\n"+a.join("\n\n"));
if (aNotFound.length>0 && --nMaxQueries>0) CheckAgain(); else alert("Kunne ikke finde disse "+aNotFound.length+" adresser:\n---------------------\n"+aNotFound.join("\n\n"));
som du kan se har jeg lavet en lille ændring (der følger brugers_id med) men det så den kan fjerne kørselsvejledning linket ved siden af brugerens adresse
// funktion til geocoder function AddressPoint(address,txt_str,firmanavn_title,brugers_id) { if (geocoder) { geocoder.getLatLng( address, function(point){ if (point){ map.addOverlay(createMarker(point, txt_str, firmanavn_title)); } else { aNotFound.push([address, txt_str, firmanavn_title, brugers_id]) } } ); } } // Denne tjekker endnu en gang de mislykkedes forsøg på at finde adresserne function CheckAgain() { var a = aNotFound.concat(""); aNotFound = []; for (var i=0,j=a.length; i<j; i++) { if (nMaxQueries==1){ closeobj("driving_" + a[i][3]); // fjerner kørselsvejledning openobj_inline("confirm_" + a[i][3]); // viser link til 'ret adressen' i stedet for kørselsvejledning <?php if (!$_GET["med_alert"]){echo"//";} ?>return alert(a[i][0] + " ikke fundet"); // så webmaster kan teste } else { AddressPoint(a[i][0], a[i][1], a[i][2], a[i][3]); } } if (aNotFound.length>0 && --nMaxQueries>0) CheckAgain(); else alert("Kunne ikke finde disse "+aNotFound.length+" adresser:\n---------------------\n"+aNotFound.join("\n\n")); }
//og så adresserne... var point = null; AddressPoint("Vejnavn 111, postnr og by, land", "Firmanavn og adresse link til kørselsvejledning (med id self) osv...", "Firmanavn","282"); //og mange flere.......
Lad mig reiterere 28/11-2008 22:43:52 - det kan være vældig sjovt at bruge den bedste aften på hele ugen, fredag, med et smovse sig i lækker javascript, men
1) Det er spild af ressourcer at slå adresser op på XXX virksomheder, og få koordinaterne, hver evig eneste gang en besøgende går ind på siden.
2) Desuden tager det tid, for den besøgende, og er afhængig af den besøgendes maskiner og tykkelse af kabler.
Derfor mit forslag om at gøre det een gang for alle, for en adresse. Det kan helt sikkert gøres serverside (siger en østjyde, der ikke lige har prøvet dét, men som har erfaring fra andre Google-API-er, og som en gang har stået på toppen af det ene World Trade Center tårn).
At a ikke er defineret er bare en advarsel. Ligemeget.
Jeg skulle tilføje fra før: Det er ok at cache koordinater for Hovedvej 117. Med de aktuelle tektoniske pladeforskydning under Danmark, skal den ikke genberegnes før om ca. 100 år.
Jo men det har jeg sådan set lavet det du omtaler. Jeg har lavet således at brugerne som endnu ikke har bekræftet deres længde og breddegrad er korrekt, får en månedlig email hvor de får et direkte link til den side hvor de skal bekræfte at nålen er korrekt placeret. Så det er kun her den første måned der skal slåes så mange adresser op. derefter så er det måske 10 adresser + nogle enkelte nye brugere, som ikke har en LATitude og LONgtitude eller hvad det hedder.
Stadigvæk learner: Det sker dog alligevel et pænt antal gange fra den besøgendes maskine. Disse kunne også stå i din tabel, men en status: "ubekræftet".
Men bestem selv - tag dig ikke af mig. Jeg sidder bare et sted hvor jeg bruger mine kræfter på at undgå redundante udregning. "Your milage may vary", som man sige på spansk.
Det kan ikke 100% udelukkes, at det burde virke - men ret meget tyder på, vi laver en fejl. At man ikke kan finde sin fejl, bør ikke lægges til grund for at konkludere, at tingene bør virke ;o)
Det er for lang tid siden, jeg sidst har rodet med GMaps API'et - så jeg skal som sagt selv sidde og teste, hvis jeg skal finde fejlen ... det gør jeg ikke =)
okay Jeg aner bare ik hvad push og concat betyder og hvad der sker. og jeg forstår heller ik hvad der sker i denne: for (var i=0,j=a.length; i<j; i++) { jeg er vant til at bruge foreach () i php
if (der var nogen adresser som ikke blev fundet) $count=false while ($count < 7){ if ($count==6){ så findes den bare ik og kørselsvejl skal fjernes og evt en besked til brugeren første gang } else { fjern den fra array med de mislykkede prøv igen om den findes } $count++; } }
learner er det = Anne-Mette Jørsfeldt? Det er en rigtig spændende side du er ved at lave http://www.huggernet.dk. Har du brugt et CMS-system eller har du selv opbygget siden?
Var det tutorial'en som fik det til at fungere? Der er mange andre gode tutorials med phpmysql lavet af Pamela. Jeg kunne ikke have lavet mine maps uden.
*LoL* Tines spørgsmål foranledigede mig til at kikke i kildekoden for spor af et CMS. Der fandt jeg denne her, som - undskyld jeg morer mig over koden - er fuldstændig ubetalelig morsom:
<script type='text/javascript'> document.write('<!'+'-- <br><br><center>Denne side virker kun korrekt hvis din browser kan læse JavaScript og det kan din browser tilsyneladende ikke.<br><br>Du har muligvis slået JavaScript fra i din browsers indstillinger.<br><br>Du kan ændre din browsers indstillinger eller downloade en ny browser.<br>Vi foreslår at du bruger Microsoft Internet Explorer eller Mozilla Firefox - Disse giver dig fuld adgang til denne side.<br><br><br><br>Beklager.<center><br><br><br><br><br><br><br><br><br><br> -->'); </script>
For det første forsøger man at udskrive en besked til brugeren om, at hans browser ikke understøtter JavaScript ... men hvordan er det nu lige, man får en browser, som ikke understøtter JavaScript til at skrive noget ud med JavaScript?
Hvis det et kort øjeblik lykkes os at se bort fra dén 'detalje', så er beskeden til brugeren ovenikøbet konstrueret som en HTML-kommentar - der jo som bekendt er usynlig for brugeren!
Jeg ved godt, det måske ikke er så sjovt at se folk grine ad ens kode, men denne her er som sagt grænsende til det hysterisk humoristiske. Hvis en kode skal have Nobelprisen for kode-jokes, må det være denne her ;D
Godt jeg kan bidrage med lidt underholdning herinde :o) Ja det er jo ikke alle knive der er lige skarpe... Men en sløv kniv er dog bedre end ingen kniv ;o)
Lidt ramt er man vel... Jeg kan godt se at det er nogle latterlige linier og har da os fjernet dem. Men bemærk dog det pæne sprog og den gode intention hvor jeg altid prøver at hjælpe mine brugere med at få en god oplevelse.
Når sandheden skal frem... I virkeligheden kommer "trickset" du omtaler faktisk herindefra en tråd jeg deltog i for laaaaaaang tid siden. Så man kan evt grine lidt videre af ham eller hende :o)
Anne Mette Jørsfeldt har designet sidens udseende for mig. Hun er dygtig og har rimelige priser så brug hende endelig hvis du får brug for en grafiker eller en fotograf. Derfor jeg anbefaler hende og linker til hende i bunden af siden.
Huggernet er faktisk ved at være en gammel dame. Ca 7-8 år gammel og under stadig udvikling/forbedring. Det er IKKE bygget på et CMS-system, men kodet af mig selv i PHP/MYSQL og lidt Javascript. Og siden er faktisk lige blevet sat sådan halvt til salg da jeg har nogle andre projekter som jeg har mere lyst til at arbejde med.
Jeg er lidt nysgerrig efter at finde ud af, hvordan du bruger geocoder i dit system så folk selv kan indtaste deres oplysninger/adresser/koordinater. Jeg regner med at folk inkl. admin, så også selv har mulighed for at rette deres oplysninger?
Har prøvet at finde ud af hvem "learner" er uden held, for evt. at kontakte dig direkte om disse ting?
learner >> Jeg gik også udfra, det var noget, du havde sakset. Du må som sagt undskylde, jeg hyggede mig højt, men jeg kunne ikke lade være. Det var ikke dig, men koden jeg morede mig over.
- og så lang tid er det nu heller ikke siden, at jeg selv kunne have fundet på at sakse den slags til eget brug efter devisen: "Nåja, JavaScript er jo JavaScript - og det her ser da vældig pænt ud!"
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.