【问题标题】:Trouble with multiple google maps on one table一张桌子上有多个谷歌地图的问题
【发布时间】:2013-08-23 19:24:03
【问题描述】:

我有一个包含 10 个 Google 地图容器的 html 表

下面是创建地图对象的js函数

函数采用地图的 lat 和 lng + div 元素来插入地图。

      function GetMap(lat,lng,number) 
      {
        var show_in=document.getElementsByClassName("map_conteiner")[number];
        var mapOptions = {
          center: new google.maps.LatLng(lat, lng),
          zoom: 8,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(show_in,
            mapOptions);
            
        var marker = new google.maps.Marker({
             position:new google.maps.LatLng(lat,lng),
             map: map,
             title:"Hotel"
           });
           
          $(show_in).fadeIn();
      }

问题是地图只有在第一次调用这个函数时才能正确显示

(无论我从哪个 div 开始)

第一次调用此函数后,总是会出现扭曲的地图(如附图所示)

【问题讨论】:

    标签: javascript google-maps google-maps-api-3 google-maps-markers


    【解决方案1】:

    你应该triggerresize-complete-callback 中的map 事件$.fadeIn()

    此外,您最好只为每个 map_conteiner 创建 1 个地图实例,并在后续调用 GetMap 时仅设置现有地图的新 center 和标记的新 position

    【讨论】:

    • 1.如果我错了,请纠正我,但我为每个 map_conteiner 使用每个 1 个实例 map_conteiner,每次该方法创建新的 google.maps.Map 2. 你能更具体一点 - 我如何完整地触发地图的调整大小事件-$.fadeIn() 的回调
    • 1.是的,每个 map_conteiner 只有 1 个地图实例,但是在每次调用 GetMap 时都会创建一个新实例并丢弃先前创建的实例(什么是不必要的,会减慢您的应用程序并增加地图负载,什么当您经常这样做并使用您的地图键时,这将是一个重要的副作用)2.$(show_in).fadeIn(function(){google.maps.event.trigger(map,'resize');});
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 2012-03-03
    • 2010-10-10
    • 2012-05-23
    • 2017-10-01
    • 1970-01-01
    • 2019-08-29
    相关资源
    最近更新 更多