0

我正在尝试将谷歌地理编码服务与开放层地图一起使用。这应该毫无问题地工作......不是吗?我正在使用的代码就像 googles geocode api doc 上的示例:

function geoCode(){
  var adresse = $("observation_location_text").getValue();
  var geoCoder = new google.maps.Geocoder();
  alert(adresse);
  geoCoder.geocode( { 'address': address}, function(results, status) {                                                                                                                                                                  
    if (status == google.maps.GeocoderStatus.OK) {
      map.setCenter(results[0].geometry.location);
      marker.moveTo(results[0].geometry.location);
      marker.display(true);
    } else {
      alert("Geocode was not successful for the following reason: " + status);
    }
  });  }

出于某种原因,我没有得到 Geocoder 对象。永远不会执行带有地址的警报。

期待一些提示

4

3 回答 3

3

尝试从 OpenLayers 中删除任何依赖项,看看它是否有效。您应该能够使用普通的 Google Maps API 创建地理编码器对象。

我注意到的一件小事是,您将输入中的值读取到名为“adresse”的变量中,但传递给了名为“address”的地理编码器变量。如果它只是一个错字并且没有声明第二个变量,则会出现脚本错误并且代码停止执行。可能这就是为什么永远不会创建地理编码器对象的原因。

于 2011-02-08T20:02:39.450 回答
1

阅读第一个答案的评论-您确定在运行“new google.maps.Geocoder()”时已加载 Google Maps 文件吗?

你说代码在加载时被调用,你是怎么做的?由于您使用的是 jQuery,因此应该在 $(document).ready() 中完成。

于 2011-02-10T17:30:29.660 回答
0

我正在尝试做和你一样的事情。这是我的问题,它可以帮助你链接

此外,如果您尝试在 openlayers 图层上传递地理编码点,请注意 openlayers 矢量图层上的点类似于 (lon, lat) 但来自 Google 地理编码的点类似于 (lat,lon)。我从谷歌页面复制:“位置包含地理编码的纬度、经度值。请注意,我们将此位置作为 LatLng 对象返回,而不是作为格式化字符串”(谷歌页面

但我认为问题在于“不幸的是,谷歌地理编码器要求你使用坐标映射到谷歌地图上。”正如 El Duderino 所说......

哦,另外,如果您使用 Drupal,请检查一下...

于 2013-05-25T18:48:21.960 回答