嵌入自定义 google 地图不刷新将不会显示
embeded custom google map wont display without refresh
我为网站构建了 2 个自定义 google 地图,并在移动网站上使用 iframe 嵌入它们:mobile.moodyplumbingmpi.com 这些地图不显示自定义地图,而是显示南半球地图首先通过录音服务区查看。如果我点击刷新,就会显示正确的地图。想知道我是否缺少在打开时显示的某种 jquery 命令或类似的命令。我完全坚持这一点。任何帮助将不胜感激!麦克风
以下是显示地图部分的代码:
回去Moody Plumbing
<article data-role="content">
<h2>Moody Plumbing Service Area</h2>
<ul data-role="listview" data-inset="true" data-filter="false">
<li>
<h3>Warren Service Areas</h3>
<iframe width="250" height="250" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://mapsengine.google.com/map/embed?mid=zaIx6P-nAOUk.kQ2ZNNmaryIQ"></iframe><br /><small><a href="https://mapsengine.google.com/map/embed?mid=zaIx6P-nAOUk.kQ2ZNNmaryIQ" style="color:#0000FF;text-align:left">View Larger Map</a></small>
</li>
<li>
<h3>Youngstown Service Areas</h3>
<iframe width="250" height="250" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://mapsengine.google.com/map/embed?mid=zaIx6P-nAOUk.kkUe66oIEZgU"></iframe><br /><small><a href="https://mapsengine.google.com/map/embed?mid=zaIx6P-nAOUk.kkUe66oIEZgU" style="color:#0000FF;text-align:left">View Larger Map</a></small>
</li>
</ul>
</article>
<nav data-role="footer">© <script>new Date().getFullYear()>2010&&document.write(+new Date().getFullYear());</script> Moody Plumbing <a href="http://moodyplumbingmpi.com/mobile.php" data-role="button" data-icon="star" data-theme="a">Visit Full Site</a>
</nav>
所以您的问题是包含地图的 iFrame 是在隐藏的情况下构建的。这让 Google MapsEngine API 感到困惑,它希望视口 window 的大小合适且可见。当您从 "Service Areas" 按钮切换 iFrame 的可见性时,MapsEngine 会在 lat/lng 0,0.
处以缩放 1 的速度向下移动。
我认为一种解决方案是在按下 "Service Areas" 按钮时动态重新设置 iFrame 的 SRC。更改两个 iFrame 标记以包含唯一 ID:
<iframe id="location1" width="250" height="250" ...
<iframe id="location2" width="250" height="250" ...
然后在HTML文档的HEAD中添加一个简单的脚本;没想到这个,来自:Reload an iframe with jQuery
<script type="text/javascript">
$(document).on("pageshow", "#locations", function(event, data) {
$('#location1').attr('src', function(i, val) { return val; });
$('#location2').attr('src', function(i, val) { return val; });
});
</script>
重新加载有点紧张。因此,其他可能的选择包括:
- 按下 "Service Areas" 按钮时动态触发 iFrame 的刷新;网上有这方面的代码,但它似乎并不适用于所有类型的浏览器。
- 放入几个 DIV 作为占位符,然后使用 javascript 插入 iFrame HTML 作为 DIV 的内部 HTML。
- 找到一种方法来触发地图 RESIZE 事件 [google.maps.event.trigger(???, "resize");] 类似于以下答案之一 link;我不知道使用 MapsEngine 是否可行:google maps not displayed correctly unless refreshing
你确实需要确定事件发生的时间。在尝试上述任何操作之前,#locations SECTION 需要完全可见,以允许 MapsEngine 初始化正常工作。在点击 iFrame 之前,您需要设置一个事件以了解 SECTION 何时可见(jQuery pageshow 事件按照上面的代码示例执行此操作)。
最后,我不确定您是使用 Google 的 MyMaps 还是使用 Google MapsEngine 构建地图。如果你确实使用过MapsEngine,需要注意的是Google将于2015年底终止MapsEngine,这两张地图将无法使用。
我为网站构建了 2 个自定义 google 地图,并在移动网站上使用 iframe 嵌入它们:mobile.moodyplumbingmpi.com 这些地图不显示自定义地图,而是显示南半球地图首先通过录音服务区查看。如果我点击刷新,就会显示正确的地图。想知道我是否缺少在打开时显示的某种 jquery 命令或类似的命令。我完全坚持这一点。任何帮助将不胜感激!麦克风 以下是显示地图部分的代码:
回去Moody Plumbing
<article data-role="content">
<h2>Moody Plumbing Service Area</h2>
<ul data-role="listview" data-inset="true" data-filter="false">
<li>
<h3>Warren Service Areas</h3>
<iframe width="250" height="250" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://mapsengine.google.com/map/embed?mid=zaIx6P-nAOUk.kQ2ZNNmaryIQ"></iframe><br /><small><a href="https://mapsengine.google.com/map/embed?mid=zaIx6P-nAOUk.kQ2ZNNmaryIQ" style="color:#0000FF;text-align:left">View Larger Map</a></small>
</li>
<li>
<h3>Youngstown Service Areas</h3>
<iframe width="250" height="250" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://mapsengine.google.com/map/embed?mid=zaIx6P-nAOUk.kkUe66oIEZgU"></iframe><br /><small><a href="https://mapsengine.google.com/map/embed?mid=zaIx6P-nAOUk.kkUe66oIEZgU" style="color:#0000FF;text-align:left">View Larger Map</a></small>
</li>
</ul>
</article>
<nav data-role="footer">© <script>new Date().getFullYear()>2010&&document.write(+new Date().getFullYear());</script> Moody Plumbing <a href="http://moodyplumbingmpi.com/mobile.php" data-role="button" data-icon="star" data-theme="a">Visit Full Site</a>
</nav>
所以您的问题是包含地图的 iFrame 是在隐藏的情况下构建的。这让 Google MapsEngine API 感到困惑,它希望视口 window 的大小合适且可见。当您从 "Service Areas" 按钮切换 iFrame 的可见性时,MapsEngine 会在 lat/lng 0,0.
处以缩放 1 的速度向下移动。我认为一种解决方案是在按下 "Service Areas" 按钮时动态重新设置 iFrame 的 SRC。更改两个 iFrame 标记以包含唯一 ID:
<iframe id="location1" width="250" height="250" ...
<iframe id="location2" width="250" height="250" ...
然后在HTML文档的HEAD中添加一个简单的脚本;没想到这个,来自:Reload an iframe with jQuery
<script type="text/javascript">
$(document).on("pageshow", "#locations", function(event, data) {
$('#location1').attr('src', function(i, val) { return val; });
$('#location2').attr('src', function(i, val) { return val; });
});
</script>
重新加载有点紧张。因此,其他可能的选择包括:
- 按下 "Service Areas" 按钮时动态触发 iFrame 的刷新;网上有这方面的代码,但它似乎并不适用于所有类型的浏览器。
- 放入几个 DIV 作为占位符,然后使用 javascript 插入 iFrame HTML 作为 DIV 的内部 HTML。
- 找到一种方法来触发地图 RESIZE 事件 [google.maps.event.trigger(???, "resize");] 类似于以下答案之一 link;我不知道使用 MapsEngine 是否可行:google maps not displayed correctly unless refreshing
你确实需要确定事件发生的时间。在尝试上述任何操作之前,#locations SECTION 需要完全可见,以允许 MapsEngine 初始化正常工作。在点击 iFrame 之前,您需要设置一个事件以了解 SECTION 何时可见(jQuery pageshow 事件按照上面的代码示例执行此操作)。
最后,我不确定您是使用 Google 的 MyMaps 还是使用 Google MapsEngine 构建地图。如果你确实使用过MapsEngine,需要注意的是Google将于2015年底终止MapsEngine,这两张地图将无法使用。