开发者社区 问答 正文

将现有google map实例渲染到新div元素中的最佳方式是什么?

当我们实例化谷歌地图时,我们可以传递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元素中?

展开
收起
sossssss 2019-12-09 16:19:18 1005 分享 版权
阿里云 AI 助理回答

在谷歌地图JavaScript API中,直接更改地图实例的div容器的方法(如setDiv(divElement))并不存在。一旦你用特定的div元素创建了地图实例,该地图就与那个div绑定在一起了。

不过,你可以通过以下间接方式实现将地图移动到另一个div中的目的:

  1. 保存地图状态:首先,你需要保存当前地图的状态,包括中心点、缩放级别、标记等。
var currentCenter = oMap.getCenter();
var currentZoom = oMap.getZoom();
// 保存其他状态,如标记等...
  1. 销毁现有地图实例:接着,销毁当前的地图实例,以便可以将其重新创建在新的div上。这可以通过设置地图的中心点为null来实现,但更推荐的做法是直接从DOM中移除包含地图的div或清空其内容。
oMap.setCenter(null); // 这可能会导致异常,更好的做法是移除或清空原始div
// 或者
document.getElementById(mapId).innerHTML = ''; 
  1. 创建新的地图实例:然后,在新的div元素中使用之前保存的地图状态创建一个新的地图实例。
var newMap = new google.maps.Map(document.getElementById(newMapId), {
    zoom: currentZoom,
    center: currentCenter,
    streetViewControl: false
    // 添加其他之前保存的状态
});
  1. 迁移标记和其他对象:如果地图上有标记、信息窗口或其他可移动的对象,你需要将它们从旧地图实例迁移到新地图实例上。

请注意,这种方法实际上是创建了一个新的地图实例,并不是直接“转移”地图到另一个div。由于谷歌地图API的设计,直接改变已存在地图实例的渲染目标div并不支持。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: