4

这是输入位置时获取纬度和经度的代码。根据我的知识,我相信我的代码是正确的。但是进入一个地方后我得到一个空白页。

这是代码:

<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>
4

2 回答 2

15

在 Google Maps Javascript V3 中,您可以使用 google.maps.Geocoder 类访问地理编码服务。

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

于 2011-11-23T12:50:49.493 回答
7

您正在尝试在这里使用 JSONP。

JSONP

如果 URL 包含字符串“callback=?” (或类似的,由服务器端 API 定义),请求 > 被视为 JSONP。有关详细信息,请参阅 $.ajax() 中对 jsonp 数据类型的讨论。

重要提示:从 jQuery 1.4 开始,如果 JSON 文件包含语法错误,请求通常会静默失败。

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

但是您调用的 URL 返回JSON,因此解析失败并出现语法错误并getJSON静默失败。

现在,当您尝试将地理编码 URL 更改为使用 JSONP 时,您会收到一个404错误,因为 Google 很久以前就删除了对 JSONP 的支持:

简而言之:
您不能再简单地使用浏览器 JavaScript 中的地理编码 API,您必须在您的服务器上添加一个代理脚本。

即使请求有效,您的代码中仍然存在错误:

json.results是一个结果数组,所以它没有geometry属性。

您必须访问数组的第一个元素才能访问具有该geometry属性的实际对象:

json.results[9].geometry.location.lng
于 2011-01-13T16:47:28.480 回答