Javascript 将地理编码与标记聚类相结合

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), 缩放

如何将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),
缩放: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='';