使用v3 API在Google地图上造成灰色空间的原因是什么?

时间:2012-05-28 14:17:11

标签: magento google-maps-api-3

我正在尝试按照Google文档中的示例加载地图,但它没有加载。我尝试使用resize,但是没有正确加载。此映射位于使用magento使用的Prototype JavaScript Framework呈现的选项卡后面。它不在标签后面正确加载。

<style type="text/css">
    #map_container { height:500px; width:700px;margin:0;}
</style>
<div id="map_container">
    <div id="map_canvas" style="width:500px;height:500px;"></div>
</div>
<script type="text/javascript"
    src="http://maps.googleapis.com/maps/api/js?key=APIKEY&sensor=true">
</script>
<script type="text/javascript">
    Event.observe( window, "load", function() {
        var myOptions = {
            center: new google.maps.LatLng(-34.397, 150.644),
            zoom: 6,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);
        ;
        google.maps.event.trigger(map, "resize");
    });
</script>  

地图显示的灰色部分覆盖了大部分地图,并且UI元素未完全初始化。我尝试使用google.maps.event.trigger(map, "resize");,但它似乎没有做任何事情。这个div在很多div里面。

2 个答案:

答案 0 :(得分:3)

如何在Magento“产品编辑”中添加新标签“GMaps”的示例(新标签“id”为'product_info_tabs_GMaps')

PHP部分

  

类My_Gmaps_Block_Adminhtml_Tabs_Gmaps扩展Mage_Adminhtml_Block_Widget_Form

public function __construct() {

  parent::__construct();

  $this->setTemplate('my/gmaps/tabs/gmaps.phtml');

}
     

/ ............................. /

     

}

模板部分'pwron / gmaps / tabs / gmaps.phtml':

<style>#map_canvas {width:100%; height:600px;}</style>
<div class="map" id="map_canvas"></div>

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
    var GMaps = Class.create();
    GMaps.prototype = {       ....................        }
    var gmaps = null;
    function switchGMapsTab(tab){
        if ( tab.tab.container.activeTab.id == 'product_info_tabs_GMaps'){
            if (!gmaps){
                gmaps = new GMaps({});
                gmaps.update();
            }
        }
    }
    varienGlobalEvents.attachEventHandler('showTab', switchGMapsTab);     <script>
麻烦的方式 1.创建地图 2.标签显示(不加载所有图块)

最好的方式 标签显示 2.创建地图

答案 1 :(得分:1)

我和你有同样的问题。但我设法用这个简单的代码找到了解决方案。

首先,转到放置标签模板的文件,搜索加载地图标签的<li>标记并将其放入其中:

<li onclick="reloadmap()">

之后的地图脚本中
google.maps.event.addDomListener(window, 'load', initialize);

把这个:

function reloadmap(){
  //when you resize the map, you lose your zoom and your center
  //so you need to get them again here
    z = map.getZoom();
    c = map.getCenter();
    google.maps.event.trigger(map, 'resize');
  //and set them again here
    map.setZoom(z);
    map.setCenter(c);
}