Google maps api 3 加载与XML表中的数据相关的自定义地图图标-Google Maps API v3

Google maps api 3 加载与XML表中的数据相关的自定义地图图标-Google Maps API v3,google-maps-api-3,Google Maps Api 3,我想在显示XML表数据的Google地图上显示我自己的自定义标记。地图功能正常并显示默认标记,但我无法确定如何更改标记以与表中的数据类型相对应 我一直在遵循教程,并试图将自定义标记图标的代码合并到我的代码中,但我一直无法使其工作。这里还有一些其他的问题需要解决,但我还不能将答案应用到我的代码中 我首先有以下代码: var map; var markers = []; var infoWindow; var locationSelect; var customIcons = { C

我想在显示XML表数据的Google地图上显示我自己的自定义标记。地图功能正常并显示默认标记,但我无法确定如何更改标记以与表中的数据类型相对应

我一直在遵循教程,并试图将自定义标记图标的代码合并到我的代码中,但我一直无法使其工作。这里还有一些其他的问题需要解决,但我还不能将答案应用到我的代码中

我首先有以下代码:

var map;
var markers = [];
var infoWindow;
var locationSelect;
var customIcons = {
        CP: {icon: 'icons/country_park.png'},
        LNR: {icon: 'icons/lnr.png'},
        PG: {icon: 'icons/parks_gardens.png'},
        SAC: {icon: 'icons/sac.png'},
        VG: {icon: 'icons/village_green.png'},
        WALK: {icon: 'icons/walk.png'},
        MG: {icon: 'icons/m_green.png'},
        MBC: {icon: 'icons/mbc.png'},
        WT: {icon: 'icons/wt.png'},
        KWT: {icon: 'icons/kwt.png'}        
    };
然后,这是从XML加载位置的部分:

var searchUrl = 'TESTxml_output.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
 downloadUrl(searchUrl, function(data) {
    var xml = parseXml(data);
    var markerNodes = xml.documentElement.getElementsByTagName("marker");
    var bounds = new google.maps.LatLngBounds();
    for (var i = 0; i < markerNodes.length; i++) {
        var name = markerNodes[i].getAttribute("name");
        var agency = markerNodes[i].getAttribute("agency");
        var type = markerNodes[i].getAttribute("type");
        var distance = parseFloat(markerNodes[i].getAttribute("distance"));
        var latlng = new google.maps.LatLng(
            parseFloat(markerNodes[i].getAttribute("lat")),
            parseFloat(markerNodes[i].getAttribute("lng"))
            );
        createOption(name, distance, i);
        createMarker(latlng, name, agency);
        bounds.extend(latlng);
        }
    map.fitBounds(bounds);
    locationSelect.style.visibility = "invisible";
    locationSelect.onchange = function() {
        var markerNum = locationSelect.options[locationSelect.selectedIndex].value;
        google.maps.event.trigger(markers[markerNum], 'click');
        };
    });
}

function createMarker(latlng, name, agency, type) {
    var html = "<b>" + name + "</b> <br/>" + agency;    
    var icon = customIcons[type];
    var marker = new google.maps.Marker({
        map: map,
        position: latlng,
        icon: icon
    });
    google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker);
        });
    markers.push(marker);
    }
var searchUrl='TESTxml_output.php?lat='+center.lat()+'&lng='+center.lng()+'&radius='+radius;
下载URL(搜索URL,函数(数据){
var xml=parseXml(数据);
var markerNodes=xml.documentElement.getElementsByTagName(“标记”);
var bounds=new google.maps.LatLngBounds();
对于(变量i=0;i“+代理机构;
变量图标=自定义图标[类型];
var marker=new google.maps.marker({
地图:地图,
位置:latlng,
图标:图标
});
google.maps.event.addListener(标记'click',函数(){
setContent(html);
信息窗口。打开(地图、标记);
});
标记器。推(标记器);
}

哪里出错了?

您的
createMarker
函数有4个参数,调用时只提供3个参数

定义:

function createMarker(latlng, name, agency, type) {
电话:

createMarker(latlng, name, agency);