Php 谷歌地图没有';不显示从数据库检索到的数据
因此,我尝试在从我的数据库(使用API 3)获取的谷歌地图上显示数据。我得到了正确居中的谷歌地图,但没有标记 generateXml.php和ViewMap.php都在同一个目录中 请帮我把它估价一下 事先非常感谢你 generateXml.phpPhp 谷歌地图没有';不显示从数据库检索到的数据,php,google-maps-api-3,Php,Google Maps Api 3,因此,我尝试在从我的数据库(使用API 3)获取的谷歌地图上显示数据。我得到了正确居中的谷歌地图,但没有标记 generateXml.php和ViewMap.php都在同一个目录中 请帮我把它估价一下 事先非常感谢你 generateXml.php <?php require("db_connection.php"); function parseToXML($htmlStr) { $xmlStr=str_replace('
<?php
require("db_connection.php");
function parseToXML($htmlStr)
{
$xmlStr=str_replace('<','<',$htmlStr);
$xmlStr=str_replace('>','>',$xmlStr);
$xmlStr=str_replace('"','"',$xmlStr);
$xmlStr=str_replace("'",''',$xmlStr);
$xmlStr=str_replace("&",'&',$xmlStr);
return $xmlStr;
}
// Select all the rows in the markers table
$query = "SELECT transportType,costPerKm,address,teleNo,webLink,description,lat,lng FROM transportpublic";
$result = mysql_query($query);
if (!$result)
{
die('Invalid query: ' . mysql_error());
}
header("Content-type: text/xml");
// Start XML file, echo parent node
echo '<markers>';
// Iterate through the rows, printing XML nodes for each
while ($row = mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
echo '<marker ';
echo 'transportType="' . parseToXML($row['transportType']) . '" ';
echo 'costPerKm="' . $row['costPerKm'] . '" ';
echo 'address="' . parseToXML($row['address']) . '" ';
echo 'teleNo="' . $row['teleNo'] . '" ';
echo 'webLink="' . parseToXML($row['webLink']) . '" ';
echo 'description="' . parseToXML($row['description']) . '" ';
echo 'lat="' . $row['lat'] . '" ';
echo 'lng="' . $row['lng'] . '" ';
echo '/>';
}
// End XML file
echo '</markers>';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<title>View Map</title>
<link rel="stylesheet" type="text/css" href="template/css/style.css" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map { height: 100% }
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="util.js"></script>
<script type="text/javascript">
var infowindow;
var map;
function initialize()
{
var myLatlng = new google.maps.LatLng(6.796396,79.877823);
var myOptions = {
zoom: 13,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("mapC"), myOptions);
var transitLayer = new google.maps.TransitLayer();
transitLayer.setMap(map);
downloadUrl("generateXml.php", function(data)
{
data = xmlParse(data);
var markers = data.documentElement.getElementsByTagName("marker");
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < markers.length; i++)
{
var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
bounds.extend(latlng);
var marker = createMarker(markers[i].getAttribute("transportType"), latlng);
}
map.fitBounds(bounds);
});
}
function createMarker(transportType, latlng)
{
var marker = new google.maps.Marker({position: latlng, map: map});
google.maps.event.addListener(marker, "click", function() {
if (infowindow) infowindow.close();
infowindow = new google.maps.InfoWindow({content: transportType});
infowindow.open(map, marker);
});
return marker;
}
function downloadUrl(url, callback)
{
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function()
{
if (request.readyState == 4)
{
request.onreadystatechange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
function doNothing()
{
}
</script>
</head>
<body onload="initialize()">
<div id="content123">
<div style="height:400px">
<!--dispaly map -->
<div id="mapC" style="width: 100%; height: 400px"></div>
</div>
</div>
</body>
</html>
generateXml lat=“7.284459lng=“删除此行中的“var”:
var map = new google.maps.Map(document.getElementById("mapC"), myOptions);
因此,它初始化全局“map”变量,而不是创建一个初始化函数本地的新变量(全局变量正在createMarker函数中使用)
(还有其他更改,但修复该更改的是map变量)不确定是否相关,但我在chrome浏览器中使用maps api时遇到了很多问题,但在其他浏览器中效果很好。非常感谢您的回复,但我使用Mozilla请格式化您的代码,使其可读。@geocodezip我格式化了代码,甚至添加了generateXml.php源代码code@geocodezip嘿,我知道了,我从您的示例中对以下LIN进行了注释,并且它起了作用,我不知道为什么:)最终Pheewww var bounds=new google.maps.LatLngBounds();边界扩展(latlng);映射边界(bounds);thanx geocodezip这一切thanx为了你的帮助你太棒了:)@Gerard我的坏抱歉我在这里编辑数据时弄糟了我更正了它thanx 4指出:)非常感谢你的示例我从那行中删除了“var”&甚至添加了和_uacct=“UA-162157-1”;海胆追踪者();但还是没有运气[downloadUrl(“SO_generateXml_20130402.xml”,函数(数据){…}我是否传递了.xml文件?我使用了
downloadxml.js
,因为我修改了它以便在IE中使用本地文件,所以您不需要使用它(尽管它可能有助于解决MIME问题)。不要添加用于跟踪我的页面的分析脚本。可能您的XML没有正确的MIME类型。我使用了alert()s,而for循环中的alert()没有显示。什么是“markers.length”?如果您将浏览器指向XML,它是否会报告错误(如中所建议的)?
<?php include("generateXml.php")?>
This page contains the following errors:
error on line 57 at column 26: StartTag: invalid element name
Below is a rendering of the page up to the first error.
View Map html { height: 100% }
body { height: 100%; margin: 0; padding: 0 } #map { height: 100% }
var infowindow; var map;
function initialize()
{
var myLatlng = new google.maps.LatLng(6.886464,79.871287);
var myOptions = { zoom: 10, center: myLatlng, mapTypeId: google.maps.MapTypeId.ROADMAP}
map = new google.maps.Map(document.getElementById("mapC"), myOptions);
var transitLayer = new google.maps.TransitLayer(); transitLayer.setMap(map);
downloadUrl("generateXml.php", function(data)
{ var xml = data.responseXML;
var markers = data.getElementsByTagName("marker");
var bounds = new google.maps.LatLngBounds(); for (var i = 0; i
var map = new google.maps.Map(document.getElementById("mapC"), myOptions);