我正在尝试使用PolyUtil。 isLocationOnPath ,它要求java.util.Listcom.google.android.gms.maps.model.LatLng
而不是java.util.List com.google.type.LatLng
。结果,当我尝试创建这样的列表时:
List<com.google.android.gms.maps.model.LatLng> path3 = new ArrayList<>();
path3.add(new com.google.android.gms.maps.model.LatLng(-35.016, 143.321),
new com.google.android.gms.maps.model.LatLng(-34.747, 145.592),
new com.google.android.gms.maps.model.LatLng(-34.364, 147.891),
new com.google.android.gms.maps.model.LatLng(-33.501, 150.217),
new com.google.android.gms.maps.model.LatLng(-32.306, 149.248),
new com.google.android.gms.maps.model.LatLng(-32.491, 147.309))
public boolean checkLocationOnRoute(){
return onRoute = PolyUtil.isLocationOnPath(currentPoint, path, false, 100);
}
这将导致cannot resolve symbol 'add'
错误。如何使用必需的List<com.google.android.gms.maps.model.LatLng>
和 isLocationOnPath 方法为折线创建列表。
答案 0 :(得分:0)
首先像这样创建折线
PolylineOptions options = new PolylineOptions().geodesic(true);
options.add(new com.google.android.gms.maps.model.LatLng(-35.016, 143.321));
options.add(new com.google.android.gms.maps.model.LatLng(-34.747, 145.592));
// Add all remaining points
Polyline line = mgGoogleMap.addPolyline(options);
现在,您可以像这样检查您的点是否在折线中:
PolyUtil.isLocationOnPath(currentPoint, line.getPoints(), true)
// The true here refers to geodesic true.
答案 1 :(得分:0)
考虑到.add(new com.google.android.gms.maps.model.LatLng(Lat, Lng));
抛出了cannot resolve symbol 'add'
,我将下面的所有代码放在我的requestLocationUpdates
方法内:
List<com.google.android.gms.maps.model.LatLng> options = new ArrayList<>();
options.add(new com.google.android.gms.maps.model.LatLng(-35.016, 143.321));
options.add(new com.google.android.gms.maps.model.LatLng(-34.747, 145.592));// Add all remaining points
onRoute = PolyUtil._isLocationOnPath_(currentPoint, options, true, 490);
我还使用490m作为tolerance
对其进行了测试,当true
在距离内时返回currentPoint
,然后在false
处返回currentPoint
超出options
中的坐标范围。