gpt4 book ai didi

php - Google map 在 PHP 页面上加载问题

转载 作者:行者123 更新时间:2023-11-29 05:41:54 24 4
gpt4 key购买 nike

我正在将 Google Map 连接到 MySQL 数据库以列出世界各地的分销商,但我似乎遇到了一些问题。

  1. 有时页面本身在 Firefox(Mac 上的 v4)中根本无法加载。它在我的机器(FF v3.6 Mac)和 Windows 机器(FF v4 Win 7)上不稳定,在 Safari/Opera 中正常,在 IE 9(Win 7)中根本无法加载。不确定是网络问题还是代码问题。
  2. 加载时间很慢。可能是因为 map 覆盖了整个页面(将创建一个方 block 来放置它)。

页面的 URL 是 here我使用了 Sean Feeney's page. 中的代码

我的代码是:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=<I entered my key here>" type="text/javascript"></script>
<body onUnload="GUnload()">
<div id="map" style="position:absolute;top:0px;bottom:0px;left:0;right:0;"></div>
</body>

<script type="text/javascript">
//<![CDATA[
var map;
var latlngbounds;
if (GBrowserIsCompatible()) {
function createMarker(point, address) {
var marker = new GMarker(point);
var html = address;
GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html);
});
return marker;
}

function extendBounding(point) {
latlngbounds.extend(point);
var zoom = map.getBoundsZoomLevel(latlngbounds);
if (zoom < 10) {
zoom = 12;
}
map.setCenter(latlngbounds.getCenter(), zoom);
}
}

map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl3D());
map.addControl(new GMapTypeControl());
latlngbounds = new GLatLngBounds();

GDownloadUrl("genxml.php", function(data) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var address = markers[i].getAttribute("address");
var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var marker = createMarker(point, address);
map.addOverlay(marker);
extendBounding(point);
}
});
}

//]]>
</script>

获取数据的代码同示例。

关于为什么它并不总是在浏览器中加载,以及为什么加载似乎需要一段时间,有什么想法吗?

谢谢,

阿德里安

最佳答案

  1. 理想情况下,您应该将加载 map 的代码包装在文档就绪或窗口加载事件中。

  2. 我注意到您的代码未正确嵌套在 GBrowserIsCompatible() block 中,因此请修复该问题。

  3. 据我所知,Google map API v2 要求您调用 setCenter()在 map 上执行任何操作之前的方法。因此,首先,在创建 map 后立即将中心设置为 (0, 0)

  4. 我注意到您在向 map 添加标记之前下载了 XML 数据。您必须考虑服务器为 XML 数据提供服务所花费的时间。如果您在下载 XML 之前调用了 setCenter(), map 将在异步下载 XML 的同时显示。

  5. 在处理 XML 数据的代码中:添加标记时,不要立即调用 setCenter()。如果您的 XML 中有 1000 个标记,这样做将导致函数被调用 1000 次。相反,只需调用 latlngbounds.extend(point)。迭代循环后,计算缩放/中心并调用 setCenter()。这样您最终只会调用此函数两次。

编辑

我已经弄清楚问题出在哪里了。 genxml.php 随机 返回字符串 Google Geo error 620 occurred,它不能被解析为 XML,这会引发 JavaScript 错误并且不显示任何标记。最好查看该文件的代码,看看为什么会随机发生这种情况。在该文件实际返回有效 XML 的其他时间,标记会按预期显示。

关于php - Google map 在 PHP 页面上加载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6198326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com