0

我正在尝试使用 Javascript 对来自 Microsoft Dynamics CRM 2011 的地址进行地理编码。我不想显示地图,只需执行地理编码并将 Lat / Long 值存储在数据库中。我不断收到一条错误消息说

“result.0 为空或不是对象”

var url = 'http://maps.googleapis.com/maps/api/geocode/json?address=39 George Street, Belmont, WA, 6104, Australia&sensor=false'

var lat = url.results[0].geometry.location.lat();

alert(lat)

我究竟做错了什么?

4

2 回答 2

2

我从您的问题中假设这是一个完整的代码片段。在这种假设下,您的代码是不完整的。您的代码创建了一个名为url. 然后,您尝试访问该字符串中的集合,称为results(不存在 - 因此该集合中的位置 0 不存在)。基本上,您的代码不执行任何操作。

您需要好好阅读 Google Geocode API,因为我很抱歉地说,您甚至还没有接近让这个工作...... https://developers.google.com/maps/documentation/javascript/地理编码

编辑:为了更有帮助 - 这里也是一个演练:http: //www.wikihow.com/Geocode-an-Address-in-Google-Maps-Javascript

于 2012-08-10T08:13:25.473 回答
1

我不得不不同意 Greg ......你的请求 URL 似乎非常接近。查看谷歌地理编码指南了解详情。您将得到一个 JSON 字符串,因此您应该使用jQuery 之类的东西将字符串解析为 object

如果您没有设置使用 JSON,那么像这样的简单脚本也会返回 Lat/Lng(改编自Google 示例):

<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script>
  var geocoder;

  function initialize() {
    geocoder = new google.maps.Geocoder();
  }

  function codeAddress() {
    var address = document.getElementById("address").value;
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        var addressLocation = results[0].geometry.location;
        alert("Lat: " + addressLocation.lat() + " Lon: " + addressLocation.lng());
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }

</script>
于 2012-08-10T13:59:22.593 回答