我写了一个脚本,允许管理员点击地图(谷歌地图api v3)设置他想要的多个位置,命名它们。也就是说,单击地图会显示一个信息窗口,其中包含用于命名该位置的表单。这些位置保存在数据库(LatLng坐标)中,并在地图上显示为标记。
然后,用户(管理员与否)可以从选择框(按名称)中选择任何这些位置。选择此选项后,可以选择在所选位置显示带有标记的地图。标记显示正确,但我希望地图在该位置居中。也就是说,屏幕中心的标记,而是显示在最左上角。实际上,最初,标记甚至不可见。你必须向上拖动地图并留下一点才能显示。
这很奇怪,因为我对标记和中心屏幕使用相同的坐标。这是我的代码(至少是相关部分):
var latlng = new google.maps.LatLng(parseFloat(location.lat), parseFloat(location.ltn));
var latlng2 = new google.maps.LatLng(parseFloat(location.lat) + 0.025, parseFloat(location.ltn) - 0.05);
var map = new google.maps.Map($('.modal-body', modal)[0], {
'center': latlng,
'zoom': 13,
'mapTypeId': google.maps.MapTypeId.ROADMAP,
});
var marker = new google.maps.Marker({
'position': latlng,
'map': map,
'title': location.name,
});
marker.setMap(map);
注意本示例中我不使用latlng2值。这是我尝试过的,但它似乎只适用于给定的分辨率。如何将地图置于这些坐标中心?
祝你好运
编辑:
$(map).focus();
modal.on('shown', function() {
$(window).resize(function() {
google.maps.event.trigger(map, 'resize');
});
google.maps.event.trigger(map, 'resize');
});
答案 0 :(得分:2)
我不确定这是否会起作用......如果该窗口调整大小是有原因的,那可能会有所帮助。我不知道它将如何与其他代码交互。
为resize
事件添加事件侦听器:
...
marker.setMap(map);
google.maps.event.addListener(map, 'resize', function() {
map.setCenter(latlng);
});