我正在尝试按照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里面。
答案 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':
麻烦的方式 1.创建地图 2.标签显示(不加载所有图块)<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>
最好的方式 标签显示 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);
}