2012-04-13 8 views
2

Ich verwende die Google Earth-API und bin neu damit. Ich habe eine Ortsmarkierung mit kml markiert und ein click -Ereignis hinzugefügt. Ich möchte den Breiten- und Längengrad dieser Ortsmarke erhalten. Obwohl ich getLatitude() und getLongitude() Funktion verwenden, aber Werte sind nicht genau. Ich möchte genau die gleichen Werte wie in kml. Die Werte, die ich bekomme, unterscheiden sich durch Punkte.Breiten- und Längengradwerte der Ortsmarke abrufen - Google Earth

Gibt es einen Weg dazu?

Dank

Shubhra

+0

zeigen einige der Code, den Sie verwenden, sowohl Javascript und kml – lifeIsGood

Antwort

3

ich für Sie das folgende Beispiel habe. Er ruft eine kml-Datei ab und hängt ein click -Ereignis an die Ortsmarkierung an. Die angezeigten Werte für den Breiten- und den Längengrad entsprechen exakt der kml-Datei. Ich hoffe es hilft.

<html> 
<head> 
<title>sample.html</title> 
<script src="http://www.google.com/jsapi?key=ABQIAAAAwbkbZLyhsmTCWXbTcjbgbRSzHs7K5SvaUdm8ua-Xxy_-2dYwMxQMhnagaawTo7L1FE1-amhuQxIlXw"></script> 
<script type="text/javascript"> 
    var ge; 
    google.load('earth', '1'); 

    function init() { 
    google.earth.createInstance('map3d', initCB, failureCB); 
    } 

    function initCB(instance) { 
    ge = instance; 
    ge.getWindow().setVisibility(true); 

    var href = 'http://code.google.com/' 
       + 'apis/earth/documentation/samples/kml_example.kml'; 

    google.earth.fetchKml(ge, href, function(kmlObject) { 
      if (kmlObject) 
      { 
       ge.getFeatures().appendChild(kmlObject); 
       google.earth.addEventListener(kmlObject, 'click', function(event) { 
       var placemark = event.getTarget(); 
       alert('Latitude :' + placemark.getGeometry().getLatitude() 
        +' Longitude :' + placemark.getGeometry().getLongitude()); 
       }); 
      } 
      if (kmlObject.getAbstractView() !== null) 
       ge.getView().setAbstractView(kmlObject.getAbstractView()); 
    });     
    } 

    function failureCB(errorCode) { 
    } 
    google.setOnLoadCallback(init); 
</script> 

</head> 
<body> 
    <div id="map3d" style="border: 1px solid silver; height: 400px; width: 600px;"> </div> 
</body> 
</html> 
+1

Vielen Dank, das hat für mich funktioniert, aber immer noch gibt es ein Problem. Manchmal gibt es einen Wert, der nicht genau derselbe ist. Beispiel: Wenn in kml der Längengrad 27.19737 ist, gibt die placemark.getGeometry(). GetLongitude() den Wert 27.1973799999999995 zurück. Obwohl der Wert nach der Rundung gleich ist, aber immer noch nicht genau und dies ist für einige Fälle nicht alles. – Shubhra

Verwandte Themen