Anzeige - [Interessiert an einer Anzeige?]

> Webmaster FAQ - Geocoding mit Google Map API (Koordinten zu Adressen) - Gimmicks
Ayom Wissensdatenbank 642 Artikel
  Aktuelles Rating:    Last Edit by Alain Aubert @ 21.11.2006 11:13:03
Edit Post

Geocoding mit Google Map API (Koordinten zu Adressen)

Mit der Google MAP API kann man mittels geocoding zu Adressen Koordinaten suchen.

Hier eine Beispielimplementierung, deren Ziel es ist aus einer Liste von Adressen in XML, jeweils die dazugehörigen Koordinaten zu hohlt...
Achtung! Es handelt sich hierbei nicht direkt um lauffähigen Code, sondern eine Beispielimplementierung. Mit etwas Javascript Wissen sollte man in nützlicher Frist zu einem Ergebnis kommen. XML Wissen ist grundlegend auch notwendig. Wenn kein RCP bzw. XML-RCP Wissen vorhanden ist, kann der XML-String direkt in die HTML Datei geschrieben werden, und das Resultat direkt aus dem HTML herauskopiert und gespeichert werden.

(um den Quelltext zu kopieren, klicken sie auf edit)

Das file.xml
CODE
<?xml version="1.0" encoding="ISO-8859-1"?>
<adresses>
<adress city="Signal Hill" state="CA"></adress>
<adress city="Simi Valley" state="CA"></adress>
</adresses>


Das file.html inkl. Javascript sieht so aus:
CODE

<html>

<head>
<script src="http://maps.google.com/maps?file=api&v=2&key={IHR GOOGLE API KEY}"
type="text/javascript"></script>
</head>
<body onload='loadd()'>
<pre id='res'></pre>
<div id='err'></div>
</body>
<SCRIPT language='javascript'>
var i=0;
var Alenght = 0;
var adresses = null;


function loadd()
{
loaded = true;
load();
readXml2('file.xml');
}
/**
* load markers.xml via urls */
function readXml2(url)
{
var request = GXmlHttp.create();
request.open("GET", url, true);
request.onreadystatechange = function()
{
if (request.readyState == 4)
{
var xmlDoc = request.responseXML;

adresses = xmlDoc.getElementsByTagName("adress");


for (var i = 0; i < adresses.length; i++)
{
var city = adresses[i].getAttribute("city");
var state = adresses[i].getAttribute("state");
getCoords(city, state);
}
}
}
request.send(null);
return true;
}


function getCoords(city, state)
{
geocoder.getLatLng(city+", "+state+", us", function(point)
{
if (!point)
{
document.getElementById('err').innerHTML += city+", "+state + " nicht gefunden. <br/>";
}
else
{
document.getElementById('res').innerHTML += "<adress city=""+city+"" state=""+state+"" x=""+point.x+"" y=""+point.y+""></adress>n";
}
});
}

</script>
</html>

Achtung Die Vorliegende Version hat sich nur mit Orten in den USA befasst, beachten Sie die Zeile:
CODE
geocoder.getLatLng(city+", "+state+", us", function(point)


Die Implementieren ist allerdings leicht anpassbar. Bei 5000 Orten hat Firefox nach >30min CPU time die Resultate ausgespuckt. Allerdings ist die Genauigkeit noch nicht perfekt und Adressen mit Strassengenauigkeit (z.B. Theresienweg, münchen, deutschland) sind nicht in allen Ländern möglich.

UPDATE: Bei dem endgültigen Implementierung war es notwendig die Adressen in 200er Päckchen zu zerlegen um die API nicht böse zu machen. Die Resultate hab ich ebenfalls an einen RCP geschickt der sie Serverseitig wieder gespeichert hat.


Kommentare und Diskussion:

Zu diesem Artikel gibt es eine Diskussion mit 2 Antworten

Creative Commons License Diese Seite steht (wenn nicht anders angegeben)
unter der Creative Commons Lizenz (Mehr Infos)
Diesen Artikel editieren
Neuer Artikel eröffnen
Aktuelle Themen: Betreff, (Autor) Antw. Views Letzte Aktion
Domainname gesucht
(cr4m0)
20 311 Fri 18. Jul 08:52
von Lila
Hilfe zu XT-Commerce
(neuerUser)
0 23 Fri 18. Jul 07:57
von neuerUser
Ein passender Name für unsere Plattform
(webdoktor)
23 545 Thu 17. Jul 10:43
von vale
Thema für Blog
(Antoine Johannes)
7 130 Tue 15. Jul 16:13
von 800XE
Was ist ein Blog
(Tuemmel)
2 88 Tue 15. Jul 11:24
von Tuemmel
Alle Diskussionen im Webmaster Allgemein Forum anzeigen
Top
 
 



Anzeige - [Interessiert an einer Anzeige?]





Anzeigen


[Interessiert an einer Anzeige?]