我的地图中有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个国家/地区充满了标记)并且文本上的文字比任何方式都要多,这也是受欢迎的。
有人可以帮助我解决这两个问题吗?
答案 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
并通过增加它来完成它。
它对我来说非常适合。