我是一名设计www.localenvironmentsurvey.com的新手编码员。主页上的地图显示已填写调查的每个人的位置,地图可在Chrome中使用。但是,没有任何标记出现在Firefox或IE中。
首先,我的index.html文件中的相关代码:
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function load() {
var map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(44.9672, -103.7716),
zoom: 3,
});
var infoWindow = new google.maps.InfoWindow;
downloadUrl("phpsqlajax_genxml2.php", function(data) {
var xml = data.responseXML;
var survey = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < survey.length; i++) {
var govname = survey[i].getAttribute("govname");
var state = survey[i].getAttribute("state");
var govtype = survey[i].getAttribute("govtype");
var point = new google.maps.LatLng(
parseFloat(survey[i].getAttribute("lat")),
parseFloat(survey[i].getAttribute("lng")));
var html = "<b>" + govname + "</b> <br/>" + state;
var marker = new google.maps.Marker({
map: map,
position: point,
});
bindInfoWindow(marker, map, infoWindow, html);
}
});
}
function bindInfoWindow(marker, map, infoWindow, html) {
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(html);
infoWindow.open(map, 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() {}
接下来,这是phpsqlajax_genxml2.php文件中的代码:
<?php
require("les.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;
}
// Opens a connection to a MySQL server
$connection=mysql_connect ('db', $username_les, $password_les);
if (!$connection) {
die('Not connected : ' . mysql_error());
}
// Set the active MySQL database
$db_selected = mysql_select_db($database_les, $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}
// Select all the rows in the survey table
$query = "SELECT * FROM survey WHERE 1";
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
header("Content-type: text/xml");
// Start XML file, echo parent node
echo '<survey>';
// Iterate through the rows, printing XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
echo '<marker ';
echo 'govname="' . parseToXML($row['govname']) . '" ';
echo 'state="' . parseToXML($row['state']) . '" ';
echo 'lat="' . $row['lat'] . '" ';
echo 'lng="' . $row['lng'] . '" ';
echo 'govtype="' . $row['govtype'] . '" ';
echo '/>';
}
// End XML file
echo '</survey>';
?>
关于如何让这张地图在Firefox和IE中运行的任何建议都会深深地,非常感谢!
答案 0 :(得分:2)
实际上已知错误加载标记图标(图像)。检查mozilla support page。此问题已在Firefox 13版中修复,我建议切换到最新版本的Firefox并检查。
答案 1 :(得分:0)
非常感谢你们的帮助和反馈。事实上,问题完全是另一回事:我需要将此代码添加到我的“phpsqlajax_genxml2.php”文件中:
$xmlStr = str_replace( 'À', 'À', $xmlStr );
$xmlStr = str_replace( 'Á', 'Á', $xmlStr );
$xmlStr = str_replace( 'Â', 'Â', $xmlStr );
$xmlStr = str_replace( 'Ã', 'Ã', $xmlStr );
$xmlStr = str_replace( 'Ä', 'Ä', $xmlStr );
$xmlStr = str_replace( 'Å', 'Å', $xmlStr );
$xmlStr = str_replace( 'Æ', 'Æ', $xmlStr );
$xmlStr = str_replace( 'Ç', 'Ç', $xmlStr );
$xmlStr = str_replace( 'È', 'È', $xmlStr );
$xmlStr = str_replace( 'É', 'É', $xmlStr );
$xmlStr = str_replace( 'Ê', 'Ê', $xmlStr );
$xmlStr = str_replace( 'Ë', 'Ë', $xmlStr );
$xmlStr = str_replace( 'Ì', 'Ì', $xmlStr );
$xmlStr = str_replace( 'Í', 'Í', $xmlStr );
$xmlStr = str_replace( 'Î', 'Î', $xmlStr );
$xmlStr = str_replace( 'Ï', 'Ï', $xmlStr );
$xmlStr = str_replace( 'Ð', 'Ð', $xmlStr );
$xmlStr = str_replace( 'Ñ', 'Ñ', $xmlStr );
$xmlStr = str_replace( 'Ò', 'Ò', $xmlStr );
$xmlStr = str_replace( 'Ó', 'Ó', $xmlStr );
$xmlStr = str_replace( 'Ô', 'Ô', $xmlStr );
$xmlStr = str_replace( 'Õ', 'Õ', $xmlStr );
$xmlStr = str_replace( 'Ö', 'Ö', $xmlStr );
$xmlStr = str_replace( '×', '×', $xmlStr );
$xmlStr = str_replace( 'Ø', 'Ø', $xmlStr );
$xmlStr = str_replace( 'Ù', 'Ù', $xmlStr );
$xmlStr = str_replace( 'Ú', 'Ú', $xmlStr );
$xmlStr = str_replace( 'Û', 'Û', $xmlStr );
$xmlStr = str_replace( 'Ü', 'Ü', $xmlStr );
$xmlStr = str_replace( 'Ý', 'Ý', $xmlStr );
$xmlStr = str_replace( 'Þ', 'Þ', $xmlStr );
$xmlStr = str_replace( 'ß', 'ß', $xmlStr );
$xmlStr = str_replace( 'à', 'à', $xmlStr );
$xmlStr = str_replace( 'á', 'á', $xmlStr );
$xmlStr = str_replace( 'â', 'â', $xmlStr );
$xmlStr = str_replace( 'ã', 'ã', $xmlStr );
$xmlStr = str_replace( 'ä', 'ä', $xmlStr );
$xmlStr = str_replace( 'å', 'å', $xmlStr );
$xmlStr = str_replace( 'æ', 'æ', $xmlStr );
$xmlStr = str_replace( 'ç', 'ç', $xmlStr );
$xmlStr = str_replace( 'è', 'è', $xmlStr );
$xmlStr = str_replace( 'é', 'é', $xmlStr );
$xmlStr = str_replace( 'ê', 'ê', $xmlStr );
$xmlStr = str_replace( 'ë', 'ë', $xmlStr );
$xmlStr = str_replace( 'ì', 'ì', $xmlStr );
$xmlStr = str_replace( 'í', 'í', $xmlStr );
$xmlStr = str_replace( 'î', 'î', $xmlStr );
$xmlStr = str_replace( 'ï', 'ï', $xmlStr );
$xmlStr = str_replace( 'ð', 'ð', $xmlStr );
$xmlStr = str_replace( 'ñ', 'ñ', $xmlStr );
$xmlStr = str_replace( 'ò', 'ò', $xmlStr );
$xmlStr = str_replace( 'ó', 'ó', $xmlStr );
$xmlStr = str_replace( 'ô', 'ô', $xmlStr );
$xmlStr = str_replace( 'õ', 'õ', $xmlStr );
$xmlStr = str_replace( 'ö', 'ö', $xmlStr );
$xmlStr = str_replace( '÷', '÷', $xmlStr );
$xmlStr = str_replace( 'ø', 'ø', $xmlStr );
$xmlStr = str_replace( 'ù', 'ù', $xmlStr );
$xmlStr = str_replace( 'ú', 'ú', $xmlStr );
$xmlStr = str_replace( 'û', 'û', $xmlStr );
$xmlStr = str_replace( 'ü', 'ü', $xmlStr );
$xmlStr = str_replace( 'ý', 'ý', $xmlStr );
$xmlStr = str_replace( 'þ', 'þ', $xmlStr );
$xmlStr = str_replace( 'ÿ', 'ÿ', $xmlStr );
这是因为人们提交的城市和县名包含了通常的撇号和放大器之外的不寻常字符,我需要将所有这些解析为xml,否则标记将无法在Firefox和IE中加载。