2011-01-13 12 views
4

Hier ist Code, der Breite und Länge erhält, wenn ein Ort eingegeben wird.Ich glaube, dass mein Code richtig nach meinem Wissen.aber ich bekomme eine leere Seite nach der Eingabe eines Ortes. Hierjson mit google geocodierung api

ist der Code:

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 

    var url="http://maps.googleapis.com/maps/api/geocode/json?address="; 
    var query; 
    var sensor="&sensor=false"; 
    var callback="&callback=?"; 


    $("button").click(function(){ 
      query=$("#query").val(); 
      $.getJSON(url+query+sensor+callback,function(json){ 

      $('#results').append('<p>Latitude : ' + json.results.geometry.location.lat+ '</p>'); 
      $('#results').append('<p>Longitude: ' + json.results.geometry.location.lng+ '</p>'); 

}); 


    }); 
}); 


</script> 

</head> 
<body> 

<input type="text" id="query" /><button>Get Coordinates</button> 
<div id="results"></div> 

</body> 
</html> 

Antwort

7

Sie versuchen JSONP hier zu verwenden.

JSONP

Wenn die URL die Zeichenfolge enthält "Callback =?" (oder ähnlich, wie von der serverseitigen API definiert), wird die Anforderung> stattdessen als JSONP behandelt. Weitere Informationen finden Sie in der Diskussion des jsonp-Datentyps in $ .ajax().

Wichtig: Wenn die JSON-Datei nach jQuery 1.4 einen Syntaxfehler enthält, wird die Anforderung normalerweise nicht erfolgreich ausgeführt.

See: http://api.jquery.com/jQuery.getJSON/

Aber die URL Sie kehrt Ebene JSON anrufen, so die Analyse mit einem Fehler Syntax fehlschlägt und getJSON nicht still.

Nun, wenn Sie versuchen, die geocode URL zu ändern JSONP zu verwenden, erhalten Sie einen 404 Fehler, da Google die Unterstützung für JSONP schon eine ganze Weile her entfernt hat:

In Kürze:
Sie können nicht einfach die Geocode API von Browser JavaScript verwenden, die Sie haben um ein Proxy-Skript auf Ihrem Server hinzuzufügen.

Und selbst wenn die Anfrage funktionieren würde, hat der Code immer noch einen Fehler drin:

json.results ein der Ergebnisse Array ist, so hat es keine geometry Eigenschaft.

Sie haben das erste Element des Arrays, um den Zugriff auf das eigentliche Objekt zu erhalten, die die geometry Eigenschaft hat:

json.results[9].geometry.location.lng 
+0

meine Anfrage ist working.I getestet es mit firebug.when i einen Ort eingeben i bekommen die response.I müssen nur die JSONP analysieren und ouput denken it.I so> ist es RGT ? – simplyblue

15

In Google Maps Javascript V3 können Sie den Geocodierungsdienst Zugriff auf die Google verwenden. maps.Geocoder-Klasse.

var myAddressQuery = 'O. J. Brochs g 16a, Bergen'; 
var geocoder = new google.maps.Geocoder(); 
geocoder.geocode(
    { address : myAddressQuery, 
     region: 'no' 
    }, function(results, status){ 
     // result contains an array of hits. 
}); 

https://developers.google.com/maps/documentation/javascript/examples/geocoding-simple

+0

Super, es funktioniert ohne Erstellen einer Karte! – JayC

+1

Es ist jedoch gegen die Nutzungsbedingungen ohne Karte zu verwenden. – NexusRex