将Google地图坐标设置为中心屏幕

时间:2014-02-06 18:27:05

标签: javascript google-maps google-maps-api-3

我写了一个脚本,允许管理员点击地图(谷歌地图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');
                });

1 个答案:

答案 0 :(得分:2)

我不确定这是否会起作用......如果该窗口调整大小是有原因的,那可能会有所帮助。我不知道它将如何与其他代码交互。

resize事件添加事件侦听器:

    ...
    marker.setMap(map);

    google.maps.event.addListener(map, 'resize', function() {
        map.setCenter(latlng);
    });