我通过以下方法获得
mydomain.com/abc
。
www.mydomain.com/real-estate/abc
但是这会返回整个
setOnPolylineClickListener
我希望mMap.setOnPolylineClickListener(new GoogleMap.OnPolylineClickListener() { @Override public void onPolylineClick(Polyline polyline) { }
和Polyline
的点击位置 我们得到Latitude
如何实现这个目标?
Longitude
我尝试使用
MapClickListener
以下代码,但它也无效。
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(final LatLng point) {
});
答案 0 :(得分:1)
你做的一切都很好:
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(final LatLng point) {
if (PolyUtil.isLocationOnPath(point, finalPolylines.getPoints(), true)) {
// user clicked on polyline
Toast.makeText(getContext(), "found", Toast.LENGTH_SHORT).show();
Log.d("found", "onMapClick: found");
}
}
});
是解决方案,但默认情况下PolyUtil.isLocationOnPath(LatLng point, java.util.List<LatLng> polyline, boolean geodesic)
的容差为0.1米,触摸只是在路径上没有这个精确。请改用PolyUtil.isLocationOnPath(LatLng point, java.util.List<LatLng> polyline, boolean geodesic, double tolerance)
,设置适当的tolerance
(10米,或20米 - 甚至更多,取决于缩放级别)
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(final LatLng point) {
if (PolyUtil.isLocationOnPath(point, finalPolylines.getPoints(), true, 20)) {
// user clicked on polyline
Toast.makeText(getContext(), "found", Toast.LENGTH_SHORT).show();
Log.d("found", "onMapClick: found");
}
}
});
一切都应该有效!
<强>更新强>
您也可以根据缩放级别修改tolerance
,例如:
...
switch (mMap.getCameraPosition().zoom) {
...
case 16:
tolerance = 30;
break;
case 15:
tolerance = 45;
break;
...
}
...
或使用公式:tolerance = f(zoom level)
,例如tolerance = 1000 / mMap.getCameraPosition().zoom;
。