解决方案很简单。
如果将来有人寻找这种功能,这可能会对他们有所帮助。
此方法是在Google方向API
返回从A到B位置的路线
后调用的。 directionPoints
是路线中点的列表
。
public void handleResult(ArrayList<LatLng> directionPoints)
{
PolylineOptions rectLine = new PolylineOptions().width(3).color(Color.RED);
for(int i = 0 ; i < directionPoints.size() ; i++)
{
rectLine.add(directionPoints.get(i));
}
drawnRoutePath = googleMap.addPolyline(rectLine);
prepareBuilder(directionPoints);
googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 17));
}
更新
谷歌方向 API 的 JSON 响应
"routes" : [
{
"bounds" : {
"northeast" : {
"lat" : 27.7136953,
"lng" : 85.32216629999999
},
"southwest" : {
"lat" : 27.7103725,
"lng" : 85.3214952
}
},
.... etc
所以我将这个范围的
lat
和
lng
用作
LatLngBounds.Builder
的参数。
JSONObject jsonBound = ((JSONObject)jRoutes.get(i)).getJSONObject("bounds");
JSONObject jsonSouthWest = jsonBound.getJSONObject("southwest");
JSONObject jsonNorthEast = jsonBound.getJSONObject("northeast");
LatLng boundSouthWest = new LatLng(jsonSouthWest.getDouble("lat"),jsonSouthWest.getDouble("lng"));
LatLng boundNorthEast = new LatLng(jsonNorthEast.getDouble("lat"),jsonNorthEast.getDouble("lng"));
ArrayList<LatLng> bounds = new ArrayList<LatLng>();
bounds.add(boundNorthEast);
bounds.add(boundSouthWest);
并将这些点包含在LatLngBounds.Builder
中。
LAtLngBounds.Builer
对象中,然后移动camera
来解决了它。 - Michael Shrestha