Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法从XML中获取标记_Javascript_Xml_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 无法从XML中获取标记

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

我无法让我的地图显示我试图从XML文件中获取的标记。我尝试了许多不同的教程和解决方案,但都没有成功,下面的代码是我在这里发布之前的最后一次尝试。以下是我所拥有的:

这是我的代码:(Index.html)


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,