Php 谷歌地图标记不显示在浏览器或浏览器中
下面是关于如何将google maps与php/mysql结合使用的教程: Firefox中的一切看起来都正常,但Chrome或Explorer中没有显示标记。在chrome控制台中,我发现以下错误: 未捕获的TypeError:无法读取null/maps/:35的属性“documentElement” (匿名函数)/maps/:35 request.onreadystatechange 以下是我的代码(与教程中的代码完全相同):Php 谷歌地图标记不显示在浏览器或浏览器中,php,mysql,google-maps,maps,Php,Mysql,Google Maps,Maps,下面是关于如何将google maps与php/mysql结合使用的教程: Firefox中的一切看起来都正常,但Chrome或Explorer中没有显示标记。在chrome控制台中,我发现以下错误: 未捕获的TypeError:无法读取null/maps/:35的属性“documentElement” (匿名函数)/maps/:35 request.onreadystatechange 以下是我的代码(与教程中的代码完全相同): PHP/MySQL和googlemaps示例 // 下面是输
PHP/MySQL和googlemaps示例
//
下面是输出xml的文件:
<?php
require("db.php");
// Start XML file, create parent node
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
// Opens a connection to a MySQL server
$connection=mysql_connect ('maps', $username, $password);
if (!$connection) { die('Not connected : ' . mysql_error());}
// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}
// Select all the rows in the markers table
$query = "SELECT * FROM markers WHERE 1";
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
header("Content-type: text");
// Iterate through the rows, adding XML nodes for each
while (( $row = mysql_fetch_assoc($result))!==false){
// ADD TO XML DOCUMENT NODE
$marker = $dom->createElement("marker");
$node->appendChild($marker);
$marker->setAttribute("name",$row['name']);
$marker->setAttribute("address", $row['address']);
$marker->setAttribute("lat", $row['lat']);
$marker->setAttribute("lng", $row['lng']);
$marker->setAttribute("type", $row['type']);
}
echo $dom->saveXML();
?>
createElement(“标记”);
$parnode=$dom->appendChild($node);
//打开到MySQL服务器的连接
$connection=mysql\u connect('maps',$username,$password);
if(!$connection){die('notconnected:'.mysql_error());}
//设置活动MySQL数据库
$db\u selected=mysql\u select\u db($database,$connection);
如果(!$db_选中){
die('不能使用db:'.mysql_error());
}
//选择标记表中的所有行
$query=“从标记中选择*,其中1”;
$result=mysql\u query($query);
如果(!$result){
die('无效查询:'.mysql_error());
}
标题(“内容类型:文本”);
//遍历行,为每个行添加XML节点
while(($row=mysql\u fetch\u assoc($result))!==false){
//添加到XML文档节点
$marker=$dom->createElement(“标记”);
$node->appendChild($marker);
$marker->setAttribute(“名称”,$row['name']);
$marker->setAttribute(“地址”,$row['address']);
$marker->setAttribute(“lat”,$row['lat']);
$marker->setAttribute(“lng”,$row['lng']);
$marker->setAttribute(“类型”,$row['type']);
}
echo$dom->saveXML();
?>
非常感谢任何帮助
mapTypeId: 'roadmap'
这不是有效的映射类型。应该是这样的:
mapTypeId: google.maps.MapTypeId.ROADMAP
var infoWindow = new google.maps.InfoWindow();
这也不完全正确:
var infoWindow = new google.maps.InfoWindow;
应该是这样的:
mapTypeId: google.maps.MapTypeId.ROADMAP
var infoWindow = new google.maps.InfoWindow();
除了邓肯已经指出的问题之外,你不能做
var icon = customIcons[type] || {};
因为Javascript中没有关联数组。var customIcons被定义为一个对象,因此
var icon = eval('customIcons'+'.'+type) || {};
然后,Marker对象的图标参数应该是MarkerImage对象,而不是
icon: icon.icon,
shadow: icon.shadow,
你应该使用
icon: new google.maps.MarkerImage(icon.icon),
shadow: new google.maps.MarkerImage(icon.shadow),
我想你也需要一个身体。@Pete:是的,我刚把身体的部分漏掉了,但我现在已经把它放在示例代码中了。邓肯:我试过你的建议,但标记仍然没有显示,控制台中的错误仍然存在。谢谢你为我指出这一点。我已经做了你建议的改变。然而,这并没有解决我的问题。仍然会得到相同的错误。你有av工作脚本吗?对不起,我没有你脚本的工作副本。然而,如果你想发布一个链接到你拥有的东西,我们可以对它进行适当的调试。请注意,您得到的错误是指行var markers=xml.documentElement.getElementsByTagName(“标记”);因此,可能是您的XML加载不正确。我想您可能已经尝试了相同的教程(上面的链接),这就是我问的原因。这是使用上面发布的脚本的实时站点:这是xml输出:感谢您的帮助:)您的问题似乎出在PHP中。尝试单击您使用Chrome为XML发布的链接(空白页),然后查看该空白页的来源。PHP脚本发送了错误的标题。在输出开始之前,需要发送一个适当的XML头,因此在PHP脚本中需要头('Content-Type:text/XML');请参阅:除此之外,请注意,许多标记都有lat/lon(0,0)对不起,这是一个空白页面,我尝试了不同的方法。您完全正确,在调试时,我在内容类型定义中只有文本。我现在在chrome中收到另一条错误消息,但标记显示:谢谢你的帮助!