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