2014-02-06 43 views
0

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

这部分代码似乎确定。你有没有其他可以重新定位中心的东西? –

+0

我刚刚编辑了这个问题。这有帮助吗? –

+0

是的,我忘了说。这显示在引导模式,虽然我不明白为什么相关=) –

回答

2

我不知道这是否会工作...如果窗口大小调整是导致比它可能的帮助。我不知道它将如何与其他代码交互。

resize事件添加事件侦听器:

... 
    marker.setMap(map); 

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

有趣。我正在使用latlng2,所以它“看起来”居中。我添加了你的代码,它扭转了效果!调用setCenter()实际上会将标记返回到左上角。 –

+0

我不理解这种行为。 –

+0

检查[这个问题](http://stackoverflow.com/questions/11742839/showing-a-google-map-in-a-modal-created-with-twitter-bootstrap)也许你得到一些提示 –