javascript - 有没有办法按国家对谷歌地图标记进行聚类?

标签 javascript google-maps markerclusterer

我目前正在使用 MarkerClustererPlus聚类我的标记。 (欢迎任何其他建议)而且我想知道是否有一种方法可以按大陆或国家而不是邻近度进行聚类。谢谢

最佳答案

尝试使用此代码进行基于区域的聚类..

var keys = [];
var markerCluster = [];
var markers = new Object();
var map;

function initialize(){
var mapProp = {
  center:center,
  zoom:5,
  mapTypeId:google.maps.MapTypeId.ROADMAP
  };
  map=new google.maps.Map(document.getElementById("googleMap")
  ,mapProp);

 //styling cluster image..
  var clusterStyles = [
  {
    opt_textColor: 'black',
    url: 'images/cluster.png',
    height: 56,
    width: 55
  },
  {
     opt_textColor: 'black',
     url: 'images/cluster2.png',
     height: 53,
     width: 52
  }
  ];

  //cluster marker options..
  var mcOptions = {
             // gridSize: 16,
             styles: clusterStyles,
             maxZoom: 15
                 };
 function initialize(){
 var mapProp = {
  center:center,
  zoom:5,
  mapTypeId:google.maps.MapTypeId.ROADMAP
 };
  map=new google.maps.Map(document.getElementById("googleMap")
  ,mapProp);

 //styling cluster image..
  var clusterStyles = [
  {
    opt_textColor: 'black',
    url: 'images/cluster.png',
    height: 56,
    width: 55
  },
  {
     opt_textColor: 'black',
     url: 'images/cluster2.png',
     height: 53,
     width: 52
  }
  ];

  //cluster marker options..
  var mcOptions = {
            // gridSize: 16,
            styles: clusterStyles,
            maxZoom: 15
             };
  //fetching lat long from data base
  <?php echo "addmarker(lat,lng); ?>"
  for(var k in markers) keys.push(k);
            for(var i = 0; i < keys.length; i++)
            {
                markerCluster[i] = new MarkerClusterer(map,      markers[keys[i]],mcOptions);
            }
 }
 function addmarker(lat, lng)
 {
     var provnce;
     var mycenter = new google.maps.LatLng(lat,lng);
     var marker = new google.maps.Marker({
        position:mycenter,
        title:infoName,
        id: count++
        // animation:google.maps.Animation.BOUNCE
        });
    //clustering markers based on region..
    $.ajax({ url:'https://maps.googleapis.com/maps/api/geocode/json?  latlng='+lat+','+lng+'&sensor=true',
         async: false,
         success: function(data){
                        // console.log(data.results[0]);
                        // return;
             for (var i=0; i<data.results[0].address_components.length; i++)
             {
                 if (data.results[0].address_components[i].types[0] == "administrative_area_level_1") {
                         //this is the object for province
                         provnce = data.results[0].address_components[i]['long_name'];
                     }
             }
             provnce = provnce.split(" ",1);
             if(markers.hasOwnProperty(provnce))
             {
               markers[provnce].push(marker);
             }
             else
             {
               markers[provnce] = new Array();
               markers[provnce].push(marker);
             }
             // console.log(markers);
             }
         });
 }

关于javascript - 有没有办法按国家对谷歌地图标记进行聚类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12777565/

相关文章:

javascript - 在服务器端调用 gRPC 流的 .end() 之前,如何在客户端接收数据

java - 我可以用一个 View 来替换mapbox android 中的图标吗?

javascript - 如何隐藏标记簇内标记上的信息窗口

javascript - 基于内部图标的传单簇颜色

graph - 如何在 Gephi 0.9.1 中应用 Girvan Newman 和马尔可夫聚类算法?

javascript - 用于移动设备的 HTML5、JS 游戏引擎

javascript - AngularJS:将元素链接到指令中的 Controller

javascript - Featherlight 灯箱在页面底部打开

android - 后台收到通知时在谷歌地图中添加标记

javascript - 如何在vue js中使用@click inside google maps infowindow触发一个函数?