Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript openlayers和谷歌地理编码器_Javascript_Ruby On Rails_Openlayers_Google Geocoder - Fatal编程技术网

Javascript openlayers和谷歌地理编码器

Javascript openlayers和谷歌地理编码器,javascript,ruby-on-rails,openlayers,google-geocoder,Javascript,Ruby On Rails,Openlayers,Google Geocoder,我正在尝试将谷歌地理编码服务与openlayer地图结合使用。这应该能正常工作……不是吗? 我使用的代码就像谷歌地理代码api文档中的示例: function geoCode(){ var adresse = $("observation_location_text").getValue(); var geoCoder = new google.maps.Geocoder(); alert(adresse); geoCoder.geocode( { 'address': addr

我正在尝试将谷歌地理编码服务与openlayer地图结合使用。这应该能正常工作……不是吗? 我使用的代码就像谷歌地理代码api文档中的示例:

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对象。地址为的警报永远不会执行

期待一些提示
jan

尝试从OpenLayers中删除任何依赖项,看看它是否有效。您应该能够使用普通的GoogleMapsAPI创建geocoder对象


我注意到的一点是,将输入值读入名为“ADRESE”的变量,但将其传递给名为“address”的地理编码器变量。若它只是一个输入错误,并且并没有声明第二个变量,那个么就会出现脚本错误,代码停止执行。可能这就是为什么您从未创建geocoder对象。

尝试从OpenLayers中删除任何依赖项,看看它是否有效。您应该能够使用普通的GoogleMapsAPI创建geocoder对象


我注意到的一点是,将输入值读入名为“ADRESE”的变量,但将其传递给名为“address”的地理编码器变量。若它只是一个输入错误,并且并没有声明第二个变量,那个么就会出现脚本错误,代码停止执行。可能这就是为什么从未创建geocoder对象。

阅读第一个答案上的注释-您确定在运行“new Google.Maps.geocoder()”时已加载Google地图文件吗


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

阅读第一个答案上的注释-您确定在运行“new Google.Maps.Geocoder()”时已加载Google地图文件吗


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

我正在尝试做与您完全相同的事情。这是我的问题,它可能会帮助你

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

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


哦,还有,如果你使用Drupal,请查看…

我正在尝试做与你完全相同的事情。这是我的问题,它可能会帮助你

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

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


哦,还有,如果您使用Drupal,请查看…

ooh顺便说一句,map和marker变量来自openlayers,因此这可能不起作用。创建新Geocoder对象的调用没有返回。您需要注意,google Geocoder的TOS不幸指示您使用坐标映射到google地图上。“注意:地理编码API只能与Google地图一起使用;禁止在地图上显示地理编码结果。有关允许使用的完整详细信息,请参阅地图API服务条款许可限制。”哦,顺便说一句,地图和标记变量来自openlayers,因此可能无法使用。创建新Geocoder对象的调用没有返回。您需要注意,google Geocoder的TOS不幸指示您使用坐标映射到google地图上。“注意:地理编码API只能与谷歌地图一起使用;禁止在地图上不显示地理编码结果。有关允许使用的完整详细信息,请参阅地图API服务条款许可限制。”是的,你是对的,这是一个打字错误。尽管如此,对google.maps.Geocoder的调用是错误的。我将调用放入init函数中,该函数在加载时被调用(上面的函数由ajax事件调用)。我现在得到的是一个“未捕获的引用错误:google未定义”,我包括了maps api和我的api keywell。显然,问题是google api没有正确加载。您指定的url在OpenLayers示例中使用,对我来说效果很好。在v3中,您不需要使用api密钥。尝试不使用key.true地图在没有key的情况下工作……但我仍然没有得到Geocoder对象:(是的,你是对的,这是一个输入错误。尽管如此,对google.maps.Geocoder的调用是错误的。我将调用放入init函数,该函数在加载时被调用(上面的函数被ajax事件调用)。我现在得到的是一个“未捕获引用错误:未定义google“我正在使用api keywell包含和地图api。显然,问题是google api加载不正确。您指定的url在OpenLayers示例中使用,对我来说效果很好。在v3中,您不需要使用api键。请尝试不使用键。如果没有键,地图也可以正常工作……但我仍然没有获得Geocoder对象:(