Javascript 将地理编码与标记聚类相结合
如何将MarkerCluster与数据库中的地理位置一起使用,在地图上显示标记效果良好。但我还不能实现标记聚类 任何帮助都将不胜感激Javascript 将地理编码与标记聚类相结合,javascript,sql,google-maps,markerclusterer,google-geocoding-api,Javascript,Sql,Google Maps,Markerclusterer,Google Geocoding Api,如何将MarkerCluster与数据库中的地理位置一起使用,在地图上显示标记效果良好。但我还不能实现标记聚类 任何帮助都将不胜感激 var customLabel={住宅:{label:'R'},商业:{label:'C'},两者:{label:'B'}; 函数initMap(){ var map=new google.maps.map(document.getElementById('map'),{ 中心:新google.maps.LatLng(43.6191,-113.9772), 缩放
var customLabel={住宅:{label:'R'},商业:{label:'C'},两者:{label:'B'};
函数initMap(){
var map=new google.maps.map(document.getElementById('map'),{
中心:新google.maps.LatLng(43.6191,-113.9772),
缩放:8
});
var infoWindow=new google.maps.infoWindow;
下载URL('URL/xml.php',函数(数据){
var xml=data.responseXML;
var xmlmarker=xml.documentElement.getElementsByTagName('marker');
Array.prototype.forEach.call(xmlmarker,函数(markerem){
var type=markerem.getAttribute('service');
var address=markerem.getAttribute('address');
var icon=customLabel[type]| |{};
var标记=[];
var markerCluster=新的MarkerClusterer(地图、标记);
var geocoder=new google.maps.geocoder();
geocoder.geocode({'address':address},函数(结果,状态){
变量位置=结果[0]。geometry.location;
var marker=new google.maps.marker({position:locations,label:icon.label});
标记器。推(标记器);
markerCluster.addMarker(marker);
})
});
});
}
函数下载url(url,回调){
var request=window.ActiveXObject?新的ActiveXObject('Microsoft.XMLHTTP'):新的XMLHttpRequest;
request.onreadystatechange=函数(){
if(request.readyState==4){
request.onreadystatechange=doNothing;
回调(请求、请求、状态);
}
};
request.open('GET',url,true);request.send(null);
}
每次创建标记时,您都在创建一个新的标记群集。创建一次,将所有标记添加到相同的MarkerClusterer
对象中
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: new google.maps.LatLng(43.6191, -113.9772),
zoom: 8
});
var infoWindow = new google.maps.InfoWindow;
// ********************************************************************************
// ** move the markers array and the marker clusterer here, outside of the loop. **
// ********************************************************************************
var markers = [];
var markerCluster = new MarkerClusterer(map, [], {
imagePath: "https://cdn.rawgit.com/googlemaps/js-marker-clusterer/gh-pages/images/m"
});
downloadUrl('http://map.northwestdatacom.com/xml.php', function(data) {
var xml = data.responseXML;
var xmlmarker = xml.documentElement.getElementsByTagName('marker');
Array.prototype.forEach.call(xmlmarker, function(markerElem) {
var id = markerElem.getAttribute('id');
var name = markerElem.getAttribute('name');
var phone = markerElem.getAttribute('phone');
var email = markerElem.getAttribute('email');
var host = markerElem.getAttribute('host');
var type = markerElem.getAttribute('service');
var address = markerElem.getAttribute('address');
var infowincontent = document.createElement('div');
var strong = document.createElement('strong');
strong.textContent = name;
infowincontent.appendChild(strong);
infowincontent.appendChild(document.createElement('br'));
var text = document.createElement('text');
text.textContent = address;
infowincontent.appendChild(text);
var icon = customLabel[type] || {};
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': address
}, function(results, status) {
var locations = results[0].geometry.location;
var marker = new google.maps.Marker({
position: locations,
label: icon.label
});
markers.push(marker);
markerCluster.addMarker(marker);
})
});
});
}
代码片段:
html,
身体,
#地图{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}
var customLabel={
住宅:{
标签:“R”
},
商业:{
标签:“C”
},
两者:{
标签:“B”
}
};
函数initMap(){
var map=new google.maps.map(document.getElementById('map'){
中心:新google.maps.LatLng(43.6191,-113.9772),
缩放:6
});
var infoWindow=new google.maps.infoWindow;
var标记=[];
var markerCluster=新的MarkerClusterer(映射,[]{
图像路径:“https://cdn.rawgit.com/googlemaps/js-marker-clusterer/gh-pages/images/m"
});
//下载URL('http://map.northwestdatacom.com/xml.php,函数(数据){
var xml=parseXml(xmlStr);//data.responseXML;
var xmlmarker=xml.documentElement.getElementsByTagName('marker');
Array.prototype.forEach.call(xmlmarker,函数(markerem){
var id=markereem.getAttribute('id');
var name=markereem.getAttribute('name');
var phone=markerem.getAttribute('phone');
var email=markerem.getAttribute('email');
var host=markerem.getAttribute('host');
var type=markerem.getAttribute('service');
var address=markerem.getAttribute('address');
var infowincontent=document.createElement('div');
var strong=document.createElement('strong');
strong.textContent=名称;
infowincontent.appendChild(强);
infowincontent.appendChild(document.createElement('br'));
var text=document.createElement('text');
text.textContent=地址;
infowincontent.appendChild(文本);
var icon=customLabel[type]| |{};
var geocoder=new google.maps.geocoder();
地理编码({
“地址”:地址
},功能(结果、状态){
变量位置=结果[0]。geometry.location;
var marker=new google.maps.marker({
位置:地点,,
标签:icon.label
});
标记器。推(标记器);
markerCluster.addMarker(marker);
})
});
// });
}
函数下载url(url,回调){
var请求=window.ActiveXObject?
新的ActiveXObject('Microsoft.XMLHTTP'):
新的XMLHttpRequest;
request.onreadystatechange=函数(){
if(request.readyState==4){
request.onreadystatechange=doNothing;
回调(请求、请求、状态);
}
};
打开('GET',url,true);
请求发送(空);
}
函数doNothing(){}
函数parseXml(str){
if(window.ActiveXObject){
var doc=新的ActiveXObject('MicrosoftXMLDOM');
doc.loadXML(str);
退货单;
}else if(window.DOMParser){
return(新的DOMParser).parseFromString(str,'text/xml');
}
};
google.maps.event.addDomListener(窗口“加载”,initMap);
var xmlStr='';