我在我的申请中使用Google-Maps-for-Rails。我的house
对象获得了latitude
和longitude
属性。我的控制器将这些东西放入一个数组中并将其传递给我视图中的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地图脚本中的某种变量。
答案 0 :(得分:0)