簡體   English   中英

Google Maps JavaScript API-fitbounds與setCenter一起

[英]Google Maps JavaScript API - fitbounds together with setCenter

我一直在尋找解決這個問題的方法,但是我似乎找不到能解決這個問題的東西。 我最接近的就是這個線程 但這是行不通的。

我正在嘗試做的是基於一組運行良好的標記來運行fitbounds。 但我也想根據用戶位置(彈跳標記在地圖中心)將地圖居中,並且仍將所有標記保留在地圖視圖內。 如果在fitBounds之后嘗試設置setCenter,則某些標記不在地圖視圖中。 有兩種結合這兩種功能的好方法嗎? 這是說明問題的小插曲

function initialize() {
  var userCenter = new google.maps.LatLng(51.508742, -0.120850);

  var userCenterMarker = new google.maps.Marker({
  position: userCenter
});

 userCenterMarker.setAnimation(google.maps.Animation.BOUNCE);

var mapProp = {
  center: userCenter,
  zoom: 12,
  mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("googleMap"),   mapProp);

var bounds = new google.maps.LatLngBounds();
var markers = getMarkers();

$(markers).each(function() {
  bounds.extend(this.position);
  this.setMap(map);
});

userCenterMarker.setMap(map);

map.fitBounds(bounds);

setTimeout(function() {
  map.setCenter(userCenter);
}, 1500);
}

謝謝!

簡單的解決方案:將“用戶標記”添加到邊界,執行fitBounds,然后將結果縮放比例減小1並以該標記為中心。

  bounds.extend(userCenterMarker.getPosition());
  map.fitBounds(bounds);

  google.maps.event.addListenerOnce(map,'bounds_changed', function() {
        map.setZoom(map.getZoom()-1);
  });

工作小提琴

更復雜的解決方案:以“用戶標記”為中心,檢查標記邊界是否完全包含在地圖的當前邊界中( map.getBounds().contains(markerBounds) ),如果不是,則將縮放級別降低1。

上面的答案對我不起作用。 這是做什么的:

contained = true;
map.fitBounds(bounds);
map.setCenter(center);
newbounds = map.getBounds();
for (i = 0; i < l; i ++) {
  if (!newbounds.contains(markers[i].getPosition())) {
    contained = false;
  }
}
if (!contained) map.setZoom(map.getZoom() - 1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM