当我们实例化谷歌地图时,我们可以传递div元素以及如下选项
oMap = new google.maps.Map(document.getElementById(mapId), {
zoom: aLoc.zoom ? 14 : 4,
center: aLoc,
streetViewControl: false
});
我们可以选择获取div元素,例如:
oMap.getDiv();
但是有没有可能为现有地图实例分配不同div元素,例如:
oMap.setDiv(divElement);
或者以其他方式将地图的相同实例呈现到另一页上的不同div元素中?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在谷歌地图JavaScript API中,直接更改地图实例的div
容器的方法(如setDiv(divElement)
)并不存在。一旦你用特定的div
元素创建了地图实例,该地图就与那个div
绑定在一起了。
不过,你可以通过以下间接方式实现将地图移动到另一个div
中的目的:
var currentCenter = oMap.getCenter();
var currentZoom = oMap.getZoom();
// 保存其他状态,如标记等...
div
上。这可以通过设置地图的中心点为null
来实现,但更推荐的做法是直接从DOM中移除包含地图的div
或清空其内容。oMap.setCenter(null); // 这可能会导致异常,更好的做法是移除或清空原始div
// 或者
document.getElementById(mapId).innerHTML = '';
div
元素中使用之前保存的地图状态创建一个新的地图实例。var newMap = new google.maps.Map(document.getElementById(newMapId), {
zoom: currentZoom,
center: currentCenter,
streetViewControl: false
// 添加其他之前保存的状态
});
请注意,这种方法实际上是创建了一个新的地图实例,并不是直接“转移”地图到另一个div
。由于谷歌地图API的设计,直接改变已存在地图实例的渲染目标div
并不支持。