Javascript 为什么我的信息窗口没有显示?

Javascript 为什么我的信息窗口没有显示?,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我正在制作一张地图,它使用了我从魔兽世界中提取的自定义瓷砖,我已经得到了标记来显示,我很确定我正确地使用了信息窗口,但是当我点击标记时,它们没有显示出来 脚本: $(function () { initialize(); $(window).resize(function () { $('#map').css('width', $(window).width() + 'px'); $('#map').css('height', ($(window)

我正在制作一张地图,它使用了我从魔兽世界中提取的自定义瓷砖,我已经得到了标记来显示,我很确定我正确地使用了信息窗口,但是当我点击标记时,它们没有显示出来

脚本:

$(function () {
    initialize();
    $(window).resize(function () {
        $('#map').css('width', $(window).width() + 'px');
        $('#map').css('height', ($(window).height() - 35) + 'px');
        google.maps.event.trigger(map, 'resize');
        hash_init(); // keeps the map centered correctly
    }).resize();
});

function CustomMapType() {}
CustomMapType.prototype.tileSize = new google.maps.Size(256, 256);
CustomMapType.prototype.maxZoom = 7;
CustomMapType.prototype.getTile = function (coord, zoom, ownerDocument) {
    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 + ')';
    return div;
};

CustomMapType.prototype.name = "Custom";
CustomMapType.prototype.alt = "Tile Coordinate Map Type";
var map;
var CustomMapType = new CustomMapType();

function initialize() {
    var mapOptions = {
        minZoom: 2,
        maxZoom: 7,
        isPng: true,
        mapTypeControl: false,
        streetViewControl: false,
        center: new google.maps.LatLng(56.705, -35.200),
        zoom: 3,
        mapTypeControlOptions: {
            mapTypeIds: ['custom', google.maps.MapTypeId.ROADMAP],
            style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
        }

    };
    map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

    map.mapTypes.set('custom', CustomMapType);
    map.setMapTypeId('custom');

    geocoder = new google.maps.Geocoder();
    infoWindow = new google.maps.InfoWindow();

    xmlUrl = "markers.xml";

    loadMarkers();

}
google.maps.event.addDomListener(window, 'load', initialize);

//
// 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;
    var xmlString ='<?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>';

        var xml = xmlParse(xmlString);
        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);
    });
}
/**
 * Parses the given XML string and returns the parsed document in a
 * DOM data structure. This function will return an empty DOM node if
 * XML parsing is not supported in this browser.
 * @param {string} str XML string.
 * @return {Element|Document} DOM.
 */
function xmlParse(str) {
    if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') {
        var doc = new ActiveXObject('Microsoft.XMLDOM');
        doc.loadXML(str);
        return doc;
    }

    if (typeof DOMParser != 'undefined') {
        return (new DOMParser()).parseFromString(str, 'text/xml');
    }

    return createElement('div', null);
}
很抱歉,如果这是一个很容易解决的问题,这是我第一次使用谷歌地图。

使用以下方法:

     var marker_image = 'http://labs.google.com/ridefinder/images/mm_20_yellow.png';
而不是

 var marker_image = markers[i].getAttribute('markerimage');
或者在xml中添加markerimage

由于图像字符串不可用,所以您的代码给出了url错误,这就是为什么您无法获得infowindow

//请看这里的演示 $function{ 初始化; $window.resizefunction{ $'map'.css'width',$window.width+'px'; $'map'.css'height',$window.height-35+'px'; google.maps.event.triggermap,“调整大小”; hash_init;//使映射正确居中 }.调整大小; }; 函数CustomMapType{} CustomMapType.prototype.tileSize=新的google.maps.Size256; 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.LatLng56.705,-35.200, 缩放:3, mapTypeControlOptions:{ MapTypeId:['custom',google.maps.MapTypeId.ROADMAP], 样式:google.maps.MapTypeControlStyle.DROPDOWN_菜单 } }; map=new google.maps.Mapdocument.getElementByIdmap_画布,mapOptions; map.mapTypes.set'custom',CustomMapType; setMapTypeId为“自定义”; geocoder=新的google.maps.geocoder; infoWindow=新建google.maps.infoWindow; xmlUrl=markers.xml; 装载标记; } google.maps.event.AddDomainListenerWindow“加载”,初始化; // //谷歌地图功能 // //谷歌地图 var mylatng;//添加坐标 var mapOptions={}; var地理编码器; var映射; var=10; var图像; var-xmlUrl; var信息窗口; var标记; var-contactUrl; 函数downloadUrlurl,回调{ var request=window.ActiveXObject?新的ActiveXObject'Microsoft.XMLHTTP':新的XMLHttpRequest; request.onreadystatechange=函数{ 如果request.readyState==4{ //request.onreadystatechange=doNothing; callbackrequest,request.status; } }; 请求。打开'GET',url,true; request.sendnull; } 函数加载标记{ map.markers=map.markers | |[]; //下载URLxmlURL,函数数据{ //var xml=data.responseXML; var xmlString=; var xml=xmlParsexmlString; markers=xml.documentElement.getElementsByTagNamemarker; 控制台。日志标记; 对于变量i=0;i你有没有收到马克笔,可能是重复的