0

我正在使用 jQuery 1.7 和最新的 jQuery Mobile 以及 Google Maps Places 库。

我在折线上遇到了类似于这个问题的问题,除了我没有使用(如果可能的话,宁愿不使用)任何插件。

单击一个页面上的按钮会在同一文档的另一页面上填充地图。

我试图通过使用下面的代码片段尽可能清晰地显示我的所有搜索结果并放大。

var bounds = new google.maps.LatLngBounds();
for(var i=0; i<results.length; i++)
{
    var resCoOrds = new google.maps.LatLng(results[i].geometry.location.lat(), results[i].geometry.location.lng());
    var marker = new google.maps.Marker({
        position : resCoOrds, 
        map : myMap, 
        icon: myMarkerIcon
    });

    makerList.push(marker);

    google.maps.event.addListener(marker, 'click', function()
    {
        var resInfoWindow = new google.maps.InfoWindow({content:liContent});
        resInfoWindow.open(map, this);
    });


    bounds.extend(resCoOrds);
    myMap.fitBounds(bounds);
}

我的问题是上面最后一行的结果!

添加第一个标记按预期工作,但是在添加第二个标记时,地图被放大,使我所有的搜索结果一起出现在地图上的一个小点上,迫使用户放大,这不符合我的目的..

这种缩小不会发生在相同的代码时

  • 不使用 jQuery 移动!!

  • 地图与使用标记填充地图的“搜索”按钮位于同一页面上

非常感谢任何帮助或指示..

提前致谢..

问候,

阿楚

4

2 回答 2

0

您的代码中有(另一个)错字:

var resCoOrds = new google.maps.LatLng(results[i].geometry.location.lat(), results[i].geometry.location.lng;

应该:

var resCoOrds = new google.maps.LatLng(results[i].geometry.location.lat(), results[i].geometry.location.lng());

虽然如果您只是使用它会更简单,results[i].geometry.location因为它已经是 google.maps.LatLng:

var resCoOrds = results[i].geometry.location
于 2012-11-13T00:45:34.713 回答
0

弄清楚了...

这是我的解决方案:我注意到,如果地图已经加载并且在我开始添加标记或调用时在活动页面上可见,则不存在缩放问题map.fitBounds()。所以我使用地图的tilesloaded事件等到地图准备好,然后添加标记和适合边界。

下面是我使用的代码...

function searchCallback(results, status) {
    if (status == google.maps.places.PlacesServiceStatus.OK) 
    {
        if (results.length) 
        {
            $.mobile.changePage("#mapview");
            google.maps.event.addListenerOnce(map, "tilesloaded", function()
            {
                var bounds = new google.maps.LatLngBounds();
                for ( var i = 0; i < results.length; i++) 
                {
                    /* code to add markers */
                    bounds.extend(results[i].geometry.location);
                }
                map.fitBounds(bounds);
            }   
        }
     }
 }

这种方法解决了我的问题,但如果有人有更好的解决方案,请告诉我..

谢谢..

于 2012-11-16T21:12:10.667 回答