如何正确处理这种情况:
有一张地图,里面有一堆物体,这一切都是聚集在一起的,当你点击一个物体的id时,你在地图上移动到这个物体,然后缩放然后打开气球。一切似乎都很好。
但是当地图放大到极限,并且物体坐标相同,这些物体在一个簇中,当你点击物体id时,物体气球也打开了,但需要集群气球打开,其中包含该集群的对象。
应该有助于 getObjectState(id) 但是当相同的坐标在集群中时,该方法返回不正确的信息。
$(".lll").bind('click', function () {
var id = $(this).attr("data-id");
var objectState = objectManager.getObjectState(id);
//console.log(objectState);
if (objectState.isClustered) {
myMap.setCenter(objectManager.objects.getById(id).geometry.coordinates, 15, {checkZoomRange: true}).then(function () {
objectManager.objects.balloon.open(id);
//objectManager.clusters.state.set('activeObject', objectManager.objects.getById(id));
//objectManager.clusters.balloon.open(objectState.cluster.id);
});
} else {
myMap.panTo(objectManager.objects.getById(id).geometry.coordinates).then(function () {
objectManager.objects.balloon.open(id);
});
}
});
一般来说,这是我的例子: https ://jsfiddle.net/Agapkin/af32bxze/
特殊之处在于,如果集群在地图的可见区域之外,那么它就会从地图中消失,并且 objectState.isClustered 始终为 false。因此,为了定位 isClustered 字段,您必须首先将集群放在范围内:https ://jsfiddle.net/073yfgao/
这是你想做的吗?