【发布时间】:2017-12-09 16:32:18
【问题描述】:
initMap 函数一直有效,直到我添加了 downloadurl 函数,现在屏幕上什么也没有出现。页面上的其他所有内容都正常工作。如何生成地图以及带有各自标记的坐标?
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 45.75372, lng: 21.22571},
zoom: 15
});
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);
}
downloadUrl('map.php', function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName('marker');
Array.prototype.forEach.call(markers, function(markerElem) {
var id = markerElem.getAttribute('id');
var name = markerElem.getAttribute('name');
var address = markerElem.getAttribute('address');
var type = markerElem.getAttribute('type');
var point = new google.maps.LatLng(
parseFloat(markerElem.getAttribute('lat')),
parseFloat(markerElem.getAttribute('lng')));
var infowincontent = document.createElement('div');
var strong = document.createElement('strong');
strong.textContent = name
infowincontent.appendChild(strong);
infowincontent.appendChild(document.createElement('br'));
var text = document.createElement('text');
text.textContent = address
infowincontent.appendChild(text);
var icon = customLabel[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
label: icon.label
});
下面是生成 xml 的 php。这按预期工作。
<?php
include('includes/functions.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;
}
$res = getMarkers();
header("Content-type: text/xml");
echo '<markers>';
while ($row = $res->fetch_assoc()) {
echo '<marker ';
echo 'id="' . $row['id'] . '" ';
echo 'name="' . parseToXML($row['name']) . '" ';
echo 'address="' . parseToXML($row['address']) . '" ';
echo 'lat="' . $row['lat'] . '" ';
echo 'lng="' . $row['lng'] . '" ';
echo 'type="' . $row['type'] . '" ';
echo '/>';
}
echo '</markers>';
?>
【问题讨论】:
-
您遇到了哪些 JavaScript 错误?贴出的代码不完整。请提供一个 minimal reproducible example 来证明该问题。
-
要么你没有粘贴所有的
downloadUrl代码,要么你有一个错误,它不会发送 ajax 请求 - 函数定义的末尾缺少右括号。此外,回调函数正在创建text元素?没有这样的元素 afaik
标签: javascript php xml google-maps