Google Maps for Rails - 在回调中将标记与用户位置放在一起

时间:2012-03-30 10:16:56

标签: ruby-on-rails ruby-on-rails-3 gmaps4rails

我正在尝试在用户当前位置放置一个标记。

但是我甚至无法在回调中获得用户位置。 似乎在浏览器的地理编码之前触发了console.log调用 我做错了什么?

haml view

= gmaps(:map_options => {:center_on_user => true})

- content_for :scripts do
  :javascript
    Gmaps.map.callback = function () {
      console.log(Gmaps.map.userLocation)
    }   

html输出

<div class="map_container"> 
  <div id="map" class="gmaps4rails_map"></div>
</div>   


<script type="text/javascript" src="//maps.google.com/maps/api/js?v=3.5&sensor=false&amp;libraries=geometry"></script>
<script type="text/javascript" src="//google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1.9/src/infobox_packed.js"></script>
<script type="text/javascript" src="//google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.5/src/markerclusterer_packed.js"></script>
<script type="text/javascript" src="//google-maps-utility-library-v3.googlecode.com/svn/trunk/richmarker/src/richmarker-compiled.js"></script>       


<script type="text/javascript" charset="utf-8">
Gmaps.map = new Gmaps4RailsGoogle();
Gmaps.load_map = function() {
Gmaps.map.map_options.center_on_user = true;
Gmaps.map.initialize();
Gmaps.map.adjustMapToBounds();
Gmaps.map.callback();
};
window.onload = function() { Gmaps.loadMaps(); };
</script>

<script>
  //<![CDATA[
    Gmaps.map.callback = function () {
      console.log(Gmaps.map.userLocation)
    }
  //]]>
</script>  

1 个答案:

答案 0 :(得分:0)

在此次回调时,尚未检索到用户位置,这只表示地图已完成显示。

想一想:用户必须决定他是否接受浏览器地理定位,因此可能需要很长时间。

我不需要回调地理位置成功,我只为地理位置失败创建了一个。

您只需在资源中修补js / coffee,然后在this line调用您需要的任何功能。