Javascript 无法从XML中获取标记
我无法让我的地图显示我试图从XML文件中获取的标记。我尝试了许多不同的教程和解决方案,但都没有成功,下面的代码是我在这里发布之前的最后一次尝试。以下是我所拥有的: 这是我的代码:(Index.html)Javascript 无法从XML中获取标记,javascript,xml,google-maps,google-maps-api-3,Javascript,Xml,Google Maps,Google Maps Api 3,我无法让我的地图显示我试图从XML文件中获取的标记。我尝试了许多不同的教程和解决方案,但都没有成功,下面的代码是我在这里发布之前的最后一次尝试。以下是我所拥有的: 这是我的代码:(Index.html) html{高度:100%} 正文{高度:100%;边距:0px;填充:0px} #地图画布{高度:100%;z索引:0;} #gmnoprint{width:auto;} 谷歌魔兽世界地图 $(函数(){ 初始化(); $(窗口)。调整大小(函数(){ $('#map').css('width
html{高度:100%}
正文{高度:100%;边距:0px;填充:0px}
#地图画布{高度:100%;z索引:0;}
#gmnoprint{width:auto;}
谷歌魔兽世界地图
$(函数(){
初始化();
$(窗口)。调整大小(函数(){
$('#map').css('width',$(window.width()+'px');
$('#map').css('height',($(window.height()-35)+'px');
google.maps.event.trigger(映射,'resize');
hash_init();//保持贴图正确居中
}).resize();
});
函数CustomMapType(){}
CustomMapType.prototype.tileSize=新的google.maps.Size(256,256);
CustomMapType.prototype.maxZoom=7;
CustomMapType.prototype.getTile=函数(坐标、缩放、所有者文档){
var div=ownerDocument.createElement('div');
var baseURL=http://d1m6g5gl70bc4l.cloudfront.net/';
baseURL+=zoom+'''.'+coord.x+'.''+coord.y+'.png';
div.style.width=this.tileSize.width+'px';
div.style.height=this.tileSize.height+'px';
div.style.backgroundColor='#1B2D33';
div.style.backgroundImage='url('+baseURL+');
返回div;
};
CustomMapType.prototype.name=“自定义”;
CustomMapType.prototype.alt=“平铺坐标贴图类型”;
var映射;
var CustomMapType=新的CustomMapType();
函数初始化(){
变量映射选项={
minZoom:2,
最大缩放:7,
是的,
mapTypeControl:false,
街景控制:错误,
中心:新google.maps.LatLng(56.705,-35.200),
缩放:3,
mapTypeControlOptions:{
MapTypeId:['custom',google.maps.MapTypeId.ROADMAP],
样式:google.maps.MapTypeControlStyle.DROPDOWN_菜单
}
};
map=new google.maps.map(document.getElementById(“map_canvas”),mapOptions);
map.mapTypes.set('custom',CustomMapType);
setMapTypeId('custom');
geocoder=新的google.maps.geocoder();
infoWindow=新建google.maps.infoWindow;
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
xmlUrl=“markers.xml”;
loadMarkers();
}
google.maps.event.addDomListener(窗口“加载”,初始化);
markers.js:
//
// Google Maps functions
//
// Google Maps vars
var myLatlng; // Add the coordinates
var mapOptions = {}
var geocoder;
var map;
var defaultZoom = 10;
var image;
var xmlUrl;
var infoWindow;
var markers;
var contactUrl;
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 loadMarkers() {
map.markers = map.markers || []
downloadUrl(xmlUrl, function(data) {
var xml = data.responseXML;
markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var marker_image = markers[i].getAttribute('markerimage');
var id = markers[i].getAttribute("id");
var address = markers[i].getAttribute("address1")+"<br />"+markers[i].getAttribute("address2")+"<br />"+markers[i].getAttribute("address3")+"<br />"+markers[i].getAttribute("postcode");
var image = {
url: marker_image,
size: new google.maps.Size(71, 132),
origin: new google.maps.Point(0, 0),
scaledSize: new google.maps.Size(71, 132)
};
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var html = "<div class='infowindow'><b>" + name + "</b> <br/>" + address+'<br/></div>';
var marker = new google.maps.Marker({
map: map,
position: point,
icon: image,
title: name
});
map.markers.push(marker);
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);
});
//
//谷歌地图功能
//
//谷歌地图
var mylatng;//添加坐标
var mapOptions={}
var地理编码器;
var映射;
var=10;
var图像;
var-xmlUrl;
var信息窗口;
var标记;
var-contactUrl;
函数下载url(url,回调){
var请求=window.ActiveXObject?
新的ActiveXObject('Microsoft.XMLHTTP'):
新的XMLHttpRequest;
request.onreadystatechange=函数(){
if(request.readyState==4){
//request.onreadystatechange=doNothing;
回调(请求、请求、状态);
}
};
打开('GET',url,true);
请求发送(空);
}
函数loadMarkers(){
map.markers=map.markers | |[]
下载URL(xmlUrl,函数(数据){
var xml=data.responseXML;
markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i”+markers[i]。getAttribute(“address2”)+“
”+markers[i]。getAttribute(“address3”)+“
”+markers[i]。getAttribute(“邮编”);
变量图像={
url:marker_图像,
尺寸:新谷歌地图尺寸(71132),
来源:新google.maps.Point(0,0),
scaledSize:新的google.maps.Size(71132)
};
var point=new google.maps.LatLng(
parseFloat(标记[i].getAttribute(“lat”),
parseFloat(markers[i].getAttribute(“lng”));
var html=“”+名称+”
“+地址+”
”;
var marker=new google.maps.marker({
地图:地图,
位置:点,,
图标:图像,
标题:姓名
});
map.markers.push(marker);
bindInfoWindow(标记、地图、infoWindow、html);
}
});
}
函数bindInfoWindow(标记、地图、infoWindow、html){
google.maps.event.addListener(标记'click',函数(){
setContent(html);
信息窗口。打开(地图、标记);
});
markers.xml:
<?xml version="1.0" encoding="UTF-8"?>
<markers>
<marker id="1" name="Goldshire" address1="Azeroth" address2="info" address3="info" city="info" postcode="info" lat="35.120" lng="33.706" />
</markers>
XML中的标记没有属性
markerimage
必须设置此属性(所需图像的路径)或删除此行:
icon: image,
你对失败的地方有点含糊不清-它能读取xml文件吗?它是否循环遍历
标记
?你是否收到任何JS错误?我收到的唯一错误是未捕获的语法错误:输入意外结束
,自我第一次创建映射以来一直在那里。你在markers.JS的结尾缺少一个“}”(至少在您发布的代码中)。您定义了两次map变量,删除了第二个(不正确)定义:map=new google.maps.map(document.getElementById('map-canvas'),mapOptions)
注意:您应该在问题中公开未知的javascript错误,它们很可能是您当前问题的根源。geocodezip成功了,谢谢!但是信息窗口呢?单击标记时它们不会显示。然后修复控制台中看到的错误(例如,当XML确实有前导空格时,它将无效)。另外,修复html,这是可怕的…就像许多JS一样,例如infoWindow=new google.maps.infoWindow;
,或复制
icon: image,