Zur Boardunity Forenstartseite

Zurück   Boardunity & Video Forum » Technik » Programmierung und Datenbanken

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1  
Alt 17.09.2006, 11:23
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.639

Google Maps, Koordinaten anhand der PLZ / ZIP?


Morgen zusammen!

Ich brauche ne Funktion die mir die Koordinaten einer deutschen Stadt anhand ihrer PLZ liefert.

Die Funktion, aus der Doku der API entnommen bietet folgende Funktion:
Code:
var map = new GMap2(document.getElementById("map"));
var geocoder = new GClientGeocoder();

function showAddress(address) {
  geocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        alert(address + " not found");
      } else {
        map.setCenter(point, 13);
        var marker = new GMarker(point);
        map.addOverlay(marker);
        marker.openInfoWindowHtml(address);
      }
    }
  );
} 


Ich habe dann versucht diese abzuändern:
Code:
var map = new GMap2(document.getElementById("map"));
var geocoder = new GClientGeocoder();

function showAddress(address) {
  geocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        alert(address + " not found");
      } else {
return point;
      }
    }
  );
}
aber alert(showAddress('44534'));

gibt immer 'undefined' zurück.


Kennt jemand da noch was anderes?



  #2  
Alt 17.09.2006, 11:57
Benutzerbild von Jens*
:-)
 
Registriert seit: 07.2003
Ort: Ljubljana
Beiträge: 515
Kennst Phoogle Maps2 ? Damit geht das mein ich...

system7designs :: Phoogle Maps 2.0

  #3  
Alt 17.09.2006, 12:30
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.639
Ist mir bekannt, ja und es ist ansich keine schlechte Sache.
Allerdings möchte ich ungern auf eine weitere Lösung setzen wenn die Google Maps API bereits eine passende Funktion bietet.
Ausserdem verwendet Phoogle ironischerweise zum bestimmen der Koordinaten eine API von Yahoo.

  #4  
Alt 17.09.2006, 12:56
Benutzerbild von Jens*
:-)
 
Registriert seit: 07.2003
Ort: Ljubljana
Beiträge: 515
Du hast recht. DAs geht wirklich. :-) Hab nun was gefunden...

PHP-Code:
<!DOCTYPE html public "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<
html>
<
head>
    <
title>Google Karte</title>
               <
script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAlU9hDaIukWDYUSoeMM3fghQ-6moEltxhkCI6s6wvbdehYkEECBT9GU8rlUWIDUrfuUgZKfwpZS-cvw" type="text/javascript"></script>
    <script type="text/javascript">
    //<![CDATA[
    var map = null;
    var geocoder = null;

    function load() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        geocoder = new GClientGeocoder();
      }
    }

    function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              map.setCenter(new GLatLng(48.015947, 11.285739), 10);
              alert(address + " not found");
            } else {
              map.setCenter(point, 13);
              var marker = new GMarker(point);
              map.addOverlay(marker);

            }
          }
        )
      }
    }
    //]]>
   </script>
   
</head>

<body onload="load();showAddress('48683');" onunload="GUnload()">
<p>48683</p>
    <div id='map' style='width: 339px; height: 300px'></div>
</body>
</html> 

  #5  
Alt 17.09.2006, 13:15
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.639
Ich habe ein Script welches Daten zu den Markern aus einer XML-Datei ausliest und diese dann auf der Karte darstellt.
In der XML-Datei sind jeweils die genauen Koordinaten gespeichert und auch weitere Informationen zu den Markern.

Da es sich dabei um Städte handelt und in der Datei momentan nur die Längen- und Breitengrade hinterlegt sind möchte ich das System auf die Postleitzahlen ausweiten und dank Google Maps die Längen- und Breitengrade automatisch aufgrund der PLZ bestimmen lassen. Ansonsten muss ich immer bei jedem neuen Eintrag nachschauen: Welche Koordinaten hat Hamburg usw.

Dafür brauche ich nun, wie oben geschrieben, ein simple Funktion die die Postleitzahl in die Koordinaten umwandelt damit ich den Marker für diese Stadt an dieser Stelle anzeigen lassen kann.

  #6  
Alt 17.09.2006, 15:33
Benutzerbild von Jens*
:-)
 
Registriert seit: 07.2003
Ort: Ljubljana
Beiträge: 515
Okay.. next Skript...

Daraus habe ich gerade folgendes gebastelt (noch nicht ganz 100%ig perfekt)

Study-Board - Das Studenten Portal | Mitgliederliste

Es basiert auf folgendem Skript:

Zum Skript

Edit: Mir ist aufgefallen, das die CPU Auslastung bei dem Skript enorm hoch ist.. Any ideas?


Geändert von Jens* (22.09.2006 um 20:35 Uhr).
  #7  
Alt 22.09.2006, 19:34
Mitglied
 
Registriert seit: 08.2005
Beiträge: 36
Zitat:
Zitat von MrNase Beitrag anzeigen
Dafür brauche ich nun, wie oben geschrieben, ein simple Funktion die die Postleitzahl in die Koordinaten umwandelt damit ich den Marker für diese Stadt an dieser Stelle anzeigen lassen kann.
Also wenn du Google die Postleitzahl und das Land gibst, sollten eigentlich die Geodaten bei rauskommen. Z.B. für 20255 (der Key ist für localhost. Einfach 1x reloaden dann gehts). Bei manchen Ländern habe ich mit Google Probleme gehabt. Da hilft dann aber oft der Webservice von Geonames

  #8  
Alt 30.09.2006, 23:40
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.639
Ich habs mit Ajax und einer datenbankgestützten Liste aller Postleitzahlen Deutschlands gelöst die praktischerweise die Koordinaten beeinhaltet.

Pagodentreff.de - Mercedes Benz Pagode w113

  #9  
Alt 30.09.2006, 23:56
Mitglied
 
Registriert seit: 07.2004
Ort: Leipzig
Beiträge: 61
Ich hab sowas ähnliches bereits mehrfach dank opengeoDB umgesetzt. Gibt ähnliches auch für andere Länder. Für eine Kopplung zwischen Koordinaten einer PLZ und einer Karte muss man imho selber sorgen.

  #10  
Alt 01.10.2006, 00:02
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.639
Ich nutze die Daten der openGeoDB allerdings brauche ich nur einen Teil davon, die Darstellung der Umkreise und den Rest übernimmt die Google Maps API bzw. die User direkt aus ihrem Profil.

  #11  
Alt 01.10.2006, 15:08
Benutzerbild von Silmarillion
Master Gandalf
 
Registriert seit: 05.2004
Ort: Unterfranken
Beiträge: 467
Zitat:
Zitat von MrNase Beitrag anzeigen
Ich habs mit Ajax und einer datenbankgestützten Liste aller Postleitzahlen Deutschlands gelöst die praktischerweise die Koordinaten beeinhaltet.

Pagodentreff.de - Mercedes Benz Pagode w113
Im IE 6 kann die Seite, ganz offensichtlich, nicht dargestellt werden. FF hingegen funktioniert, scheinbar, einwandfrei.

mfg

__________________
Christian
Forum rund um das Thema Fußball: Fanlager.de
Forum rund um das Thema Fantasy: Fantasy-Foren.de
Forum rund um das Thema Alternative Musik: Alternative-Musik-Forum.de
  #12  
Alt 01.10.2006, 19:54
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.639
Den Fehler versuche ich den ganzen Tag über zu beheben aber... Es klappt nicht *GRRRRRRRRR* Das Problem ist, dass ich hier keinen Internet Explorer installiert hab.

  #13  
Alt 01.10.2006, 20:03
Mitglied
 
Registriert seit: 07.2004
Ort: Leipzig
Beiträge: 61
Hab auch keinen IE hier, aber ich sehe schon am Quellcode, dass der ziemlich chaotisch ist. Du hast z.B 2 mal DOCTYPE und <html> definiert. Mein Validator meldet 4 Fehler und 43 Warnungen, bei w3c sind es 26 Fehler. Versuche die mal zu beseitigen, dann klappts vielleicht auch im IE.

  #14  
Alt 01.10.2006, 22:22
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.639
Jau, hatte mich beim kopieren der Templates vertan.. Unordentlich siehts aus weil vBSEO die Ausgabe komprimiert. Hab übrigens ne Lösung gefunden und schon teilweise angewendet: Nachbarschaftshilfe

Damit dürfte es gehen.. Naja, Morgen ist auch noch ein Tag.

  #15  
Alt 26.01.2007, 09:46
neues Mitglied
 
Registriert seit: 01.2007
Beiträge: 3
Hallo zusammen,

@MrNase

Ich bin auch auf der Suche nach sowas, darf man deine Lösung erfahren?


Gruß
Matthias

  #16  
Alt 26.01.2007, 11:18
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.639
Klar, ich hab von openGEO die Datenbank mit den Postleitzahlen genommen um die Koordinaten zu erfahren. Mit den Koordinaten kann Google Maps ja gut was anfangen.

  #17  
Alt 10.03.2007, 20:29
Benutzerbild von Luki
Administrator
 
Registriert seit: 02.2004
Ort: Hamburg
Beiträge: 486
Ahoi

OpenGeo interessiert mich auch sehr! Wo finde ich das?
ansonsten ist Free Map Generator for your Homepage - Maps, Karten, Stadplan gerade an Start gegangen

Gruß
Luki

  #18  
Alt 11.03.2007, 02:47
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.639
OpenGeo(Db): OpenGeoDb - freie Geokoordinaten-Datenbank nach Orten und PLZs - Front Page

Off-Topic:
Hoffe mein Linktipp von vorgestern hat geholfen!

  #19  
Alt 12.03.2007, 01:53
Benutzerbild von Luki
Administrator
 
Registriert seit: 02.2004
Ort: Hamburg
Beiträge: 486
Der Link war eine grosse Hilfe (wie Du am Resultat siehst )
vielen Dank auch für diesen Tipp!!

  #20  
Alt 21.03.2007, 00:32
neues Mitglied
 
Registriert seit: 01.2007
Beiträge: 3
Hi zusammen,

@ MrNase,

wie hast du das mit dem Radius hinbekommen? Gibt es dafür ein Codeschnipsel?


Gruß
Matthias

  #21  
Alt 21.03.2007, 20:23
Benutzerbild von MrNase
Mitglied
 
Registriert seit: 06.2003
Ort: /
Beiträge: 2.639
Aber sicher doch!

Code:
                function drawCircle(point, radius, color) {
                        var cColor = color;
                        var cWidth = 5;
                        var Cradius = radius;   
                        var d2r = Math.PI/180; 
                        var r2d = 180/Math.PI; 
                        var Clat = (Cradius/6377.83027)*r2d; 
                        var Clng = Clat/Math.cos(point.lat()*d2r); 
                        var Cpoints = []; 
                        for (var i=0; i < 33; i++) { 
                            var theta = Math.PI * (i/16); 
                            var CPlng = point.lng() + (Clng * Math.cos(theta)); 
                            var CPlat = point.lat() + (Clat * Math.sin(theta)); 
                            var P = new GLatLng(CPlat,CPlng);
                            newBounds.extend(P);
                            Cpoints.push(P); 
                        }
                        map.addOverlay(new GPolyline(Cpoints,cColor,cWidth)); 
                    }
point -> Koordinaten des Punktes der den Mittelpunkt bildet
radius -> Zahl (Einheit: Kilometer)
color -> HEX oder Wort, Farbe des Kreises

  #22  
Alt 23.03.2007, 22:41
neues Mitglied
 
Registriert seit: 01.2007
Beiträge: 3
Vielen Dank

Gruß
Matthias

  #23  
Alt 28.07.2007, 21:50
neues Mitglied
 
Registriert seit: 07.2007
Beiträge: 1
Hallo Leute,

danke erstmal für diesen Thread!
Aber nun eine Frage:

Ich will folgende Daten zu einer Koordinate machen, mit der die Google API umgehen kann.
PLZ Ort Land

Aber ich weiß nicht wie!
Ich habe mir das hier (danke Jens) schon angeschaut und versucht einzubauen, aber bei mir geht es nicht!
Dann habe ich mir das openGeo (ein Danke an MrNase) angeschaut, aber da ist mein Ort nicht mal drin!
Also könnt ihr mir vielleicht helfen?

Antwort


Stichworte
-


Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Google Community sucht Moderatoren und einen Community Leiter Eisy Marktplatz: Projekt, Domain- & Jobbörse 2 20.01.2009 14:52
Google Maps mit Postleitzahlenbereichen bennos Programmierung und Datenbanken 0 06.12.2006 16:26






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25