簡體   English   中英

如果在調整大小事件之后調用,Google Maps API fitBounds()的行為會有所不同

[英]Google Maps API fitBounds() behaves differently if called after resize event

我正在使用google maps api在具有移動和桌面視圖的網站上顯示飛行路線。 如果顯示寬度小於320px,則移動視圖將隱藏包含的div(顯示:無)。 如果用戶將手機轉到橫向模式,則div以及地圖將變為可見。 但是,如果以橫向模式加載頁面,則與頁面以縱向模式加載(未顯示地圖)然后旋轉到橫向相比,地圖顯示另一個縮放級別。 調整大小事件被觸發,在其中,我稱之為fitBounds()。 任何想法??

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
<script src="http://www.foo.bar/label.js"></script>
<script>
var bounds = new google.maps.LatLngBounds(null);
var map = null;
var myLatLng = null;

function initialize() {

  var mapOptions = {
    panControl: true,
    scaleControl: false,
    overviewMapControl: false,
    zoomControl: true,
    mapTypeControl: false,
    streetViewControl: false,
    mapTypeId: google.maps.MapTypeId.HYBRID,
    center: { lat: 0.0, lng: 0.0},
    zoom: 2
  };

  var destinations = [
    {lat:25.073858, lng:55.2298444, myTitle:'Dubai'},
    {lat:13.7246005, lng:100.6331108, myTitle:'Bangkok'},
    {lat:8.722049, lng:98.23421, myTitle:'Khao Lak'},
    {lat:1.3146631, lng:103.8454093, myTitle:'Singapore'}
  ];

  var image = {
     url: 'plane-icon-medium.png',
     // This marker is 24 pixels wide by 24 pixels tall.
     size: new google.maps.Size(48, 48),
     // The origin for this image is 0,0.
     origin: new google.maps.Point(0,0),
     // The anchor for this image is the middle at 12,12.
     anchor: new google.maps.Point(12, 12)
   };
  map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
  var flightPath = new google.maps.Polyline({
    path: destinations,
    geodesic: true,
    strokeColor: '#FF0000',
    strokeOpacity: 1.0,
    strokeWeight: 2
  });

  flightPath.setMap(map);

  for (var i = 0; i < destinations.length; i++) {
    var myTitle = destinations[i].myTitle;
    myLatLng = new google.maps.LatLng(destinations[i].lat, destinations[i].lng);
    var marker = new google.maps.Marker({
        position: myLatLng,
        map: map,
        icon: image,
        title: 'test',
        text: myTitle,
    });
    var label = new Label({
       map: map
    });
    label.bindTo('position', marker, 'position');
    label.bindTo('text', marker, 'text');
    bounds.extend(marker.position);
  }
  map.fitBounds(bounds);
  if(map.getZoom() == 0) map.setZoom(1);
}

google.maps.event.addDomListener(window, 'load', initialize);
google.maps.event.addDomListener(window, "resize", function() {
     google.maps.event.trigger(map, "resize");
     map.fitBounds(bounds);
     //alert("Resize Event fired");
     //if(map.getZoom() == 0) map.setZoom(1);
    });

</script>
<div id="map_canvas"></div>

謝謝,克萊曼

嘗試禁用Google API的默認用戶界面。 我認為您的地圖沒有在人像上平移。 該片段顯示了用於禁用它的模板。 希望能幫助到你。

 function initialize() { var mapOptions = { zoom: 4, center: new google.maps.LatLng(-33, 151), disableDefaultUI: true } var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); } 

暫無
暫無

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

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