javascript - 如何将谷歌地图对象重新附加到 DOM?

标签 javascript google-maps dom google-maps-api-3

我不确定正确的行话,所以如有必要,请随时编辑这篇文章的标题。

基本上,我正在创建一个 Google map 对象并添加一堆叠加层、标记等。这就是我创建 map 的方式:

map = new google.maps.Map(document.getElementById("map"), mapOptions)

但是,在侧面导航时,我可能会到达 map DOM 元素被销毁的 url,但 map 对象仍然存在于我的 Web 应用程序中。当我返回显示 map 的 url 时,我想将 map 重新​​附加到 DOM 元素,而不是重新创建 map 。

有什么办法吗?

编辑:

更具体地说,我在 map 上有一堆标记和叠加层

Map = 
  map: null
  markers:[]
  icons: {}


  init: ->
    mapOptions = 
      center: new google.maps.LatLng(34.0500, -118.2500)
      zoom: 9

    @map = new google.maps.Map(document.getElementById("map"), mapOptions)

    @icons.default = 
      path: google.maps.SymbolPath.CIRCLE
      strokeColor: '#DD0000'
      fillColor: '#DD0000'
      fillOpacity: 0.6
      scale:8
      strokeWeight: 2

  addMarker: (post) ->
    gLatLng = new google.maps.LatLng post.location.lat, post.location.lng

    gMarker = new google.maps.Marker
      position: gLatLng
      map: @map
      icon: @icons.default
      animation: google.maps.Animation.DROP

    marker =
      post: post
      gMarker: gMarker

    @markers.push marker

我想我可以创建一个新 map 并将所有标记附加到新 map 上,但这似乎没有必要,因为我可能在 map 上有许多其他叠加层

最佳答案

在创建 Map 对象后,不可能将 Map 对象附加到另一个 DOM 元素。正如您在 Google Maps Javascript API v3 Reference 中看到的那样Map 上只有一个 getDiv() 方法可用,没有 setDiv()

我认为您可以保留 MarkerMapOptions 等其他对象来重新创建 Map,但是 Map 如果没有相应的 DOM 元素,对象本身是无用的。

关于javascript - 如何将谷歌地图对象重新附加到 DOM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25214206/

相关文章:

javascript - 使用Javascript检查数据库中是否存在记录

android - 将经纬度位置发送到谷歌地图

google-maps - 谷歌地图静态与动态商业和建筑物 View

api - Google map API - V2 键 x V3 无键

javascript - querySelector() 返回静态节点列表或事件节点列表

javascript - Observable 数组没有向我的前端表提供数据

javascript - Material UI IconButton onClick 可增加或减少值

javascript - 无法使用 AJAX 表单

javascript - 如何从呈现的 HTML 元素生成 PDF?

javascript - jQuery:复制一个表行,然后根据特定的命名约定更改其中输入的名称?