谷歌地图 - 画布自定义叠加缩放

问题描述 投票:0回答:2

正如您所见:http://rolls.mit.edu/

我正在做以下事情:

  1. 创建一个地图 map = new google.maps.Map(mapContainer, options);
  2. 添加叠加层 overlay = new google.maps.OverlayView(); overlay.draw = function() {}; overlay.setMap(map);
  3. 添加画布到叠加层 overlay.getPanes().overlayLayer.appendChild(canvas);

一切都很好,除非我缩放,画布保持相同的大小。放大/缩小时是否可以缩放画布?有关示例的指示吗?

javascript google-maps google-maps-api-3 browser
2个回答
0
投票

您需要收听google.maps.Map zoom_changed事件,从地图中获取新的缩放级别(使用map.getZoom()),然后适当调整大小或修改canvas元素。

如果您只想画一条线,请查看内置缩放功能的google.maps.Polyline叠加层。


0
投票

您几乎必须为要支持的任何Google缩放级别渲染新画布。我解决这个问题的方法是在地图的“空闲”事件上设置一个监听器。一旦缩放或平移后地图变为空闲,这将触发。然后,您可以确定缩放级别是否有更改并相应地执行操作。

var map = new google.maps.Map(mapContainer, options);
var zoomLevel = 6; //some defaut

var handleBoundsChanged = function(){
   var oldZoom = zoomLevel;
   var zoomLevel = map.getZoom();
   if( zoomLevel != oldZoom){
       rebuildOverlayForZoom(zoomLevel)
     }
}


google.maps.event.addListener (map, 'idle', handleBoundsChanged);
© www.soinside.com 2019 - 2024. All rights reserved.