问题:我们在地图上有多条折线,当用户点击折线时,需要检查该点是否在折线上,并且还需要提取点击点的纬度。
已知:
可以通过在地图上设置点击侦听器来提取LatLong,并检测折线点击,我们可以使用折线点击侦听器,但需要一个结合两者的解决方案。也就是说,只要用户点击折线,我们就可以为该点提取合理正确的latlong。(不是在地图上点击/点击不在折线上)
答案 0 :(得分:1)
首先,您需要创建一个结构来存储创建的折线:
List<Polyline> polylines = new ArrayList<Polyline>();
并将您创建的每条折线添加到List
:
polylines.add(mMap.addPolyline(yourPolylineOptions));
然后,您可以使用Google Maps Android API Utility Library中的PolyUtil.isLocationOnPath
方法来了解是否已点击折线(在此示例中使用100米公差。这意味着如果用户使用折线被视为已点击点击100米以下的折线或更少):
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng click) {
boolean isPolylineClicked = false;
for (Polyline polyline : polylines) {
if (PolyUtil.isLocationOnPath(click, polyline.getPoints(), false, 100)) {
isPolylineClicked = true;
// Polyline clicked!
}
}
if (!isPolylineClicked) {
// Other OnMapClickListener behavior
}
}
}
});