有没有一种方法可以确定缩放级别,使所有标记都适合于缩放级别?我正在使用mapbox 0.4.0
我认为答案与此类似,但我找不到Android版本。
[https://www.mapbox.com/mapbox.js/example/v1.0.0/markers-only-at-zoom-level/]
有没有一种方法可以确定缩放级别,使所有标记都适合于缩放级别?我正在使用mapbox 0.4.0
我认为答案与此类似,但我找不到Android版本。
[https://www.mapbox.com/mapbox.js/example/v1.0.0/markers-only-at-zoom-level/]
最新的SDK版本不再适用现有答案。 相反,请使用以下内容:
LatLngBounds latLngBounds = new LatLngBounds.Builder()
.include(new LatLng(<marker 1 latlng position>))
.include(new LatLng(<marker 2 latlng position>))
.build();
mapboxMap.moveCamera(CameraUpdateFactory.newLatLngBounds(latLngBounds, 50));
感谢友好的Mapbox支持团队提供了这个答案 :)
好的,我已经弄清楚了。我需要创建一个包含所有标记的边界框。
final BoundingBox zoomLevel = findZoomLevel(hotelLocation,poiLocations);
mv.zoomToBoundingBox(zoomLevel,true,true);
.....
private BoundingBox findZoomLevel(LatLng hotelLocation, LatLng[] poiLocations) {
double bottomPadding = 0.002;
double topPadding = 0.005;
BoundingBox box = new BoundingBox(findTopMost(hotelLocation,poiLocations).getLatitude() + topPadding,
findRightMost(hotelLocation,poiLocations).getLongitude(),
findBottomMost(hotelLocation,poiLocations).getLatitude() - bottomPadding,
findLeftMost(hotelLocation,poiLocations).getLongitude());
return box;
}
更新
LatLngBounds latLngBounds = new LatLngBounds.Builder()
.include(new LatLng(lat1,lng1))
.include(new LatLng(lat2,lng2))
.build();
mapboxMap.moveCamera(
CameraUpdateFactory.newLatLngBounds(LatLngBounds bounds,
int paddingLeft,
int paddingTop,
int paddingRight,
int paddingBottom));