【问题标题】:Google Maps Does not Zoom "organically" when new markers are loaded加载新标记时,谷歌地图不会“自然”缩放
【发布时间】:2012-11-18 16:45:12
【问题描述】:

我有这段代码可以加载 XML 图形标记,并且我还将它设置为在加载新标记时进行缩放。然而,我不喜欢的是缩放“立即”发生并且不会缓慢缩放到水平,而且由于某种原因,地图缩小得比它需要的远得多。我希望地图只缩小到需要的程度,以便标记可见。

有什么建议吗?谢谢!

clearOverlays();
downloadUrl("AllActivityxml.php", function(data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var name = markers[i].getAttribute("id");
          var address = markers[i].getAttribute("id");
          var type = markers[i].getAttribute("venue_type");
          var point = new google.maps.LatLng(
              parseFloat(markers[i].getAttribute("lat")),
              parseFloat(markers[i].getAttribute("lng")));
          var html = "<b>" + name + "</b> <br/>" + address;
          var icon = customIcons[type] || {};
markerBounds.extend(point);
          var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: icon.icon,
            shadow: icon.shadow

          });

          markersArray.push(marker);
          bindInfoWindow(marker, map, infoWindow, html);
          map.fitBounds(markerBounds);



        }
      });

【问题讨论】:

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


    【解决方案1】:

    缩放“立即”发生并且不会缓慢缩放到水平——这就是当您执行fitBounds() 时实际发生的情况。看起来你想要像map.panTo() 这样的东西,它使地图上的过渡与map.setCenter() 不同,但在fitBounds() 中并非如此。

    地图的缩小也超出了它的需要——map.fitBounds(markerBounds);移到for loop之外

    【讨论】:

    • 嘿,谢谢,但是将map.panTo(markerBounds) 放在循环之外没有任何作用。没有错误,但也没有缩放。
    • 没有。 map.panTo() 不适用于边界变量,这就是我提到的。您关于缓慢缩放的第一个问题没有解决方法。我解决了您关于缩放的第二个问题吗?
    • 嗨 Cdeez,不是真的 - 因为我希望缩放感觉自然。然而,通过谷歌搜索后,我发现这是不可能的。不过感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2017-10-14
    • 2016-03-28
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    相关资源
    最近更新 更多