openlayers和谷歌地理编码器

时间:2011-02-08 08:09:17

标签: javascript ruby-on-rails openlayers google-geocoder

我正在尝试将google地理编码服务与openlayer地图一起使用。这个shoudl工作没有问题......不应该吗? 我正在使用的代码就像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对象。带地址的警报永远不会被执行。

期待一些提示 扬

3 个答案:

答案 0 :(得分:3)

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

我注意到的一件小事是你从输入中读取值为“adresse”的变量,但是传递给geocoder变量调用“地址”。如果它只是一个拼写错误而第二个变量未声明,则会出现脚本错误并且代码停止执行。可能这就是你从未创建地理编码器对象的原因。

答案 1 :(得分:1)

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

你说代码是在加载时调用的,你以什么方式执行它?由于您使用的是jQuery,因此应该在$(document).ready()。

中完成

答案 2 :(得分:0)

我试图做与你完全相同的事情。这是我的问题,它可以帮助你link

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

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

哦,如果你使用Drupal,请检查this ...

相关问题