Kha*_*lil 7 android google-maps click overlap marker
在我们的应用中,许多标记被绘制在不同的位置,并且在某些情况下在某个缩放级别,标记彼此重叠.因此,当我点击标记时,我希望顶部标记onMarkerClick被触发,但是它会针对最后一个隐藏标记触发,即最后一个标记,后面没有标记.
你有什么建议我这样做?此外,我没有信息窗口,因此我true从onMarkerClick方法返回.
确定您的创客相对于整个屏幕的大小(例如 10%)。将其定义为名为 IMAGE_SIZE_RATIO 的浮点数
在向地图添加标记时维护列表标记。在 OnMarkerClickListener onMarkerClick 方法中,迭代其他标记并比较标记之间相对于当前可见地图尺寸和标记大小的距离。如下面的示例代码所示:
静态最终浮点数 IMAGE_SIZE_RATIO = .15f;//定义标记相对于整个屏幕的大小
私人无效setupListeners(){
getMap().setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@覆盖
公共布尔onMarkerClick(标记标记){
LatLngBounds b = getMap().getProjection().getVisibleRegion().latLngBounds;
浮动距离 = distanceBetweenPoints(b.northeast, b.southwest) * IMAGE_SIZE_RATIO;
for (标记 m : 制造者 ) {
if (marker.equals(m) ) { 继续; } //不要比较相同的
if (distanceBetweenPoint(m.getPosition(),marker.getPosition()) {
/*注意将 onMarkerClick 视为 Aynch 任务并继续
如果还想对主要物体开火。
*/
返回 onMarkerClick(m);
}
}
// 在实际标记上执行您想要的操作。
}
....(听众的其余部分)...
}
}
protected Float getDistanceInMeters(LatLng a, LatLng b) {
位置 l1 = 新位置("");
位置 l2 = 新位置("");
l1.setLatitude(a.latitude);
l1.setLongitude(a.经度);
l2.setLatitude(b.latitude);
l2.setLongitude(b.经度);
返回 l1.distanceTo(l2)
}
| 归档时间: |
|
| 查看次数: |
2456 次 |
| 最近记录: |