我有一张带有非常小变焦的宽地图,因此地球的某些部分会出现多次。如果我添加一个普通标记,它会成倍增加,以便视口中的每个位置都有相同的标记:
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Hello World!'
});
https://jsfiddle.net/L50thpqr/
但是,当我使用带路径的自定义标记时,它只会在中间显示一次:
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Hello World!',
icon: {
fillOpacity: .75,
scale: 1,
strokeColor: 'black',
strokeWeight: 1,
scale: .8,
fillColor: "#fffb70",
path: "M 0,-8.55 -8.55,8.55 8.55,8.55 Z"
}
});
https://jsfiddle.net/q14s2rLk/
我的问题是我如何为自定义标记获得相同的行为,因此它也会显示多次。
答案 0 :(得分:0)
简化的一种方法是在服务器上渲染标记。 Google提供了两种内置于API中的服务,可以轻松实现:FusionTablesLayer
和KmlLayer
。从预先渲染或即时渲染的图像创建自定义叠加层。
另一种有用的优化技术涉及视口标记管理:将地图上渲染的标记限制为仅存在于可视区域内的标记。
如果您仍想在地图上显示许多标记,请考虑创建一个自定义叠加层,以显示功能最少的标记。与API提供的标准标记相比,这种方法可以获得性能提升。
群集通过以聚合形式合并地图上彼此相邻的数据,简化了数据可视化。
您可以使用Grid-vased Clustering
或Distance-based Clustering
。基于网格的聚类通过将地图划分为特定大小的正方形(每个缩放处的大小更改)然后将标记分组到每个网格方块来工作。基于距离的聚类类似于基于网格的聚类,除了不创建固定方形边界的聚类之外,基于标记与聚类质心之间的距离创建聚类。通常通过迭代现有标记位置来算法地指定聚类质心。
或者您可以使用数组向Google地图添加自定义标记,请查看:Adding multiple custom markers to a google map using an array