如何在圆圈上添加文字以及如何在缩小不同角色时组合圆圈

时间:2015-03-24 17:05:11

标签: javascript google-maps google-maps-api-3 google-maps-markers markerclusterer

我的地图中有3个不同位置的1000多个标记。 我从文本文件中读取Lat和Long,并在Google地图中渲染它,并根据国家/地区名称在它们上创建圈子。并计算这些圈子中的标记数量。

现在我无法做到的是什么?

(1)我必须在那些圈子上打印计数文本(如何不使用群集?)

(2)当我缩小圆圈重叠时。因此,每当圆圈重叠时,它应该结合这两个圆的2个半径,并且应该使一个大圆圈覆盖两个较小的标记(较小的2现在将消失,导致仅在较大的一个上的标记总数)。

我执行此操作的完整代码(http://prntscr.com/6kt30w)是:

$.ajax({
                type: 'GET',
                url: './App_Start/TextFile/latLongList3.txt',
                dataType: 'text',
            }).success(function (data)
            {

                var s2 = data.replace(/^.*$/, " ").replace(/\r\n/g, " ");
                var array = s2.split(/[ ]+/g);
                var test = [].concat.apply([], array.map(function (array) { return array.split(/\s+/); }))

                var col1 = [];
                var col2 = [];
                var col3 = [];
                var j = 0;
                for (var i = 0; i <= test.length - 3; i = i + 3)
                {

                    col1[j] = test[i];
                    col2[j] = test[i + 1];
                    col3[j] = test[i + 2];
                    var myLatlng = new google.maps.LatLng(col3[j], col2[j]);
                    marker = new google.maps.Marker(
                       {
                           position: myLatlng,
                           map: map,
                           title: 'Hello World! ' + col1[j]
                       });
                    markers.push(marker);
                    if (j > 0) {
                        LatLong[j] = myLatlng;
                    }

                    j++;
                }     
            })
        }
        google.maps.event.addDomListener(window, 'load', initialize);
    </script>

我不想使用MarkerClusterer,因为它非常小。是的,它确实会完成我想要完成的两项任务,但我感觉到的问题是当我在全国各地都有标记时,MarkerClusterer只是在国家的一小部分上空盘旋而我想要圈子悬停在所有国家,无论我有标记,它应该有文字。因此,如果有任何替代方案可以使群集的大小覆盖整个国家/地区的所有标记(因为我的1个国家/地区充满了标记)并且文本上的文字比任何方式都要多,这也是受欢迎的。

有人可以帮助我解决这两个问题吗?

2 个答案:

答案 0 :(得分:1)

  

我必须在那些圆圈上打印计数文本(如何没有   使用Cluster?)

您可以使用以下方法从marker.length获取标记计数

var markers = [];
for (var i = 0; i < 100; i++) {
  var latLng = new google.maps.LatLng(data.photos[i].latitude,
      data.photos[i].longitude);
  var marker = new google.maps.Marker({'position': latLng});
      markers.push(marker);
}

要将计数添加到圈子,您可以查看此JSFiddel

我仍然需要更多地看待你的第二个问题

答案 1 :(得分:0)

最后我找到了它的解决方案。我只是使用MarkerClusterer并通过增加它来完成它。

它对我来说非常适合。