【发布时间】:2013-09-30 22:46:32
【问题描述】:
我正在尝试在我的网页中显示地图以从中获取坐标。它工作正常,我可以拖放一个标记并在输入框中获取坐标。
但是当我加载网页时,我的问题就来了。除了地图,一切都显示得很好,在这里你可以看到地图是如何显示的:
但是如果此时我调整网页的大小,我的意思是,如果它是全屏的,就把它放一半。或者如果它只是屏幕的一部分,就让它变得更大或更小。然后,您将看到正确的地图:
(这不是同一个地方,我知道。我从 2 次重新加载中获取了图像)
我用 HTML 创建网页,但我称它为不同的网页。当你加载索引时,你会得到一个带有这个的按钮
href:<a href="#openMap">
而且,显示的部分将是:
<div data-role="page" id="openMap" data-theme="e">
<div data-role="header" data-id="fixedNav" data-position="fixed">
blablabla
<div data-role="content">
<form action="">
<div id="map_canvas" style="width:500px; height:300px"></div>
blablabla
还有所有的 div、表格……都已正确关闭。我有很多输入框和字段我没有放在这里。
然后,在我的谷歌地图脚本中,我有这个:
var map;
function initializeNewMap() {
var myLatlng = new google.maps.LatLng(43.462119485,-3.809954692009);
var myOptions = {
zoom: 14,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = new google.maps.Marker({
draggable: true,
position: myLatlng,
map: map,
title: "Your location"
});
}
但我不知道为什么需要调整大小。有办法解决吗?
编辑:我添加更多信息:
我这样称呼有地图的网页部分:
$(document).on("pageinit", '#openMap', function() {
我试着放了
google.maps.event.trigger(map, 'resize');
就在它之后,但什么也没发生。
解决方案:
我在其他问题中找到了解决方案(Google Maps v3 load partially on top left corner, resize event does not work,Ian Devlin 帖子):
正如一位用户所说,我需要调整地图大小。但只是那条线不起作用。我在初始化函数的末尾添加了这段代码:
google.maps.event.addListenerOnce(map, 'idle', function() {
google.maps.event.trigger(map, 'resize');
});
所以它只是在地图显示后调用。
【问题讨论】:
-
我认为答案是调整大小触发器,但它不起作用。我添加了有关该部分网页的初始化方式的信息。因为我不知道把触发线放在哪里。
-
这是正确的方法,但如果这仅发生在初始绘制时,您不应该在触发调整大小事件之前运行 clearListeners 吗?否则,每个空闲事件都会触发不必要的调整大小。
标签: javascript html google-maps