2015-06-10 4 views
0

В API Руководство Google карты с подробным описанием типов MapType состоянием интерфейса следующим в отношении «необходимых» свойств:Цель свойства maxZoom в Картах Google MapType?

MaxZoom (обязательно) определяет максимальный уровень масштабирования, при котором для отображением плитки этого типа карты.

Однако в примере, приведенном Google на:

https://developers.google.com/maps/documentation/javascript/examples/maptype-base

Свойство MaxZoom даже не включен.

Если код изменен для включения свойства maxZoom (как показано ниже), свойство не имеет эффекта - должно ли оно? Некоторые разъяснения было бы неплохо ...

<!DOCTYPE html> 
<html> 
<head> 
    <title>Overlay map types</title> 
    <style> 
     html, body, #map-canvas { 
     height: 100%; 
     margin: 0px; 
     padding: 0px; 
     } 
    </style> 
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script> 
    <script> 
     /** @constructor */ 
     function CoordMapType(tileSize) { 
     this.tileSize = tileSize; 
     this.maxZoom = 12; // <--- THIS HAS NO EFFECT ?? 
     } 

     CoordMapType.prototype.getTile = function (coord, zoom, ownerDocument) { 
     var div = ownerDocument.createElement('div'); 
     div.innerHTML = coord.toString() + '<br>zoom: ' + zoom.toString(); 
     div.style.width = this.tileSize.width + 'px'; 
     div.style.height = this.tileSize.height + 'px'; 
     div.style.fontSize = '10'; 
     div.style.borderStyle = 'solid'; 
     div.style.borderWidth = '1px'; 
     div.style.borderColor = '#AAAAAA'; 
     return div; 
     }; 

     var map; 
     var chicago = new google.maps.LatLng(41.850033, -87.6500523); 

     function initialize() { 
     var mapOptions = { 
      zoom: 10, 
      center: chicago 
     }; 
     map = new google.maps.Map(document.getElementById('map-canvas'), 
              mapOptions); 

     // Insert this overlay map type as the first overlay map type at 
     // position 0. Note that all overlay map types appear on top of 
     // their parent base map. 
     map.overlayMapTypes.insertAt(0, new CoordMapType(new google.maps.Size(256, 256))); 
     } 

     google.maps.event.addDomListener(window, 'load', initialize); 

    </script> 
</head> 
<body> 
    <div id="map-canvas"></div> 
</body> 
</html> 

ответ

0

Найдено это Бюри d в Google картах документации в разделе, озаглавленном «MapType объект спецификация» ...

Тип MaxZoom: Номер

Максимальный уровень масштабирования для карты при выводе этого MapType. Требуется для базового MapTypes, игнорируется для наложения MapTypes.

Таким образом, свойство MaxZoom НЕ требуется для наложения типов MapType; что соответствует поведению в моем примере с исходным кодом.

0

Если вы изменили свойства mapType объекта (maxZoom, minZoom, и т.д ...), измененная эффект будет принимать только после типа карты будет изменена на mapType ,

Например, если ток mapType является TERRAIN, и вы изменили TERRAIN's будет работать только после того, как изменения mapType другого типа (например, ROADMAP,HYBRID,etc..) и обратно TERRAIN.

Вместо установки опции MaxZoom, MaxZoom использование ядра карты можно в MapType в . опция Добавить слушатель для "maptypeid_changed" события, и когда происходит событие, изменить maxZoom вариант карты:

google.maps.event.addListener(map, 'maptypeid_changed', function(event){ 
if(map.getMapTypeId() === google.maps.MapTypeId.TERRAIN){ 
    map.setOptions({maxZoom:/*For example*/5}); 
}else 
if(map.getMapTypeId() === google.maps.MapTypeId.ROADMAP){ 
    map.setOptions({maxZoom:/*For example*/8}); 
}//Etc... 
else{ 
    map.setOptions({maxZoom:/*For example*/21}); 
} 
}); 
+0

Я отредактировал мой оригинальный вопрос и привел пример для уточнения. – bdcoder

Смежные вопросы