使用Google-Maps-for-Rails和Rails 4标记中心地图

时间:2016-01-04 22:03:36

标签: javascript google-maps ruby-on-rails-4 gmaps4rails

我在我的申请中使用Google-Maps-for-Rails。我的house对象获得了latitudelongitude属性。我的控制器将这些东西放入一个数组中并将其传递给我视图中的javascript:

def show
  @hash = Gmaps4rails.build_markers(@house) do |house, marker|
    marker.lat house.latitude
    marker.lng house.longitude
  end
end

视图如下所示:

<div style='width: 800px;'>
  <div id="map" style='width: 800px; height: 400px;'></div>
</div>

<script type="text/javascript">
  handler = Gmaps.build('Google');
  handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
    markers = handler.addMarkers(<%=raw @hash.to_json %>);
    handler.bounds.extendWith(markers);
    handler.fitMapToBounds();
    handler.getMap().setZoom(10);
  });
</script>

现在它完全正常。但在初始地图视图中,我的标记始终位于左上角。我希望它显然位于地图的中间。

我尝试将此行添加到没有真正执行任何操作的脚本中:

handler.map.centerOn({ lat: markers[0].lat, lng: markers[0].lng });

我需要做些什么才能将标记放在中间?

编辑: 好的,感谢Zsolt我发现加载地图时标签的不活动会导致问题。我现在要做的是在用户点击标签后立即重新输入地图。由于我的javascript非常糟糕,我需要一些帮助。这就是我现在所能得到的:

$('#tab_location').on('shown.bs.tab', function (e) {
  var myLatlng = {lat: gon.lat, lng: gon.lng};
  var map = document.getElementById('map');
  map.setCenter(myLatlng);
});

如您所见,我正在使用 gon 来获取正确的javascript坐标。捕获坐标运行良好,但其余的将导致此错误:

TypeError: a is undefined

a 是google地图脚本中的某种变量。

1 个答案:

答案 0 :(得分:0)

我有类似的问题(左上角的标记簇)。宝石的作者建议:

  

&#34;您应该在div显示后显示地图&#34;

here

希望这对你有帮助,我是JS的菜鸟。如果你找到解决方案,请告诉我!