代码之家  ›  专栏  ›  技术社区  ›  Rixius

动态谷歌地图集成的问题

  •  1
  • Rixius  · 技术社区  · 14 年前

    我在Chrome5.0.375.99的谷歌地图上遇到了一个非常奇怪的问题: 如果动态创建多个地图实例,则第二个和上一个有一个奇怪的bug,它无法正确显示,只显示在地图空间的一小部分中。

    一些示例页面:
    one default -单击AddOne时,新对象出现问题。
    none default -第二次单击AddOne时,新对象出现问题。
    two default -两个初始映射都显示正常,但是当您单击AddOne时,新对象出现问题。

    真正的Wierd部分是,重新调整窗口大小将强制任何不正确显示的地图正确显示,以修复自身。这让我相信修复它的是重绘事件

    1 回复  |  直到 14 年前
        1
  •  1
  •   Okeydoke    14 年前

    Crescent Fresh是正确的,因为在分区上初始化新地图之前需要设置分区的尺寸。

    要在创建map div之前设置宽度高度,可以尝试以下操作:

    return this.each(function(){
        var jT = $(this),
                center = new mAPI.LatLng(options.lat, options.long),
                geocoder = new mAPI.Geocoder();
    
        jT.css({
            'width': hw[0],
            'height': hw[1],
            'margin-left': 'auto',
            'margin-right': 'auto'
        });
    
        jT.data('map', new mAPI.Map(this, $.extend(options, { center: center })));
    
        geocoder.geocode({ address: address }, function(results, status) {
            if (status === mAPI.GeocoderStatus.OK && results.length) {
                if (status !== mAPI.GeocoderStatus.ZERO_RESULTS) {
                    jT.data('map').setCenter(results[0].geometry.location);
                    var dump = new mAPI.Marker({
                            position: results[0].geometry.location,
                            map: jT.data('map')
                    });
                    return dump;
                }
            }
        });
    });
    

    上面的“应该”工作,还没有测试过