android zoomto,Android Map Zoom to Show all Pins

I used this method in a recent project of mine

public void centerOverlays() {

int minLat = 81 * MapStoresController.MAP_SCALE;

int maxLat = -81 * MapStoresController.MAP_SCALE;

int minLon = 181 * MapStoresController.MAP_SCALE;

int maxLon = -181 * MapStoresController.MAP_SCALE;

for (int i = 0; i < overlayItems.size(); i++) {

Store s = overlayItems.getItem(i).getStore();

minLat = (int) ((minLat > (s.getLocation().getLatitude() * MapStoresController.MAP_SCALE)) ? s.getLocation().getLatitude() * MapStoresController.MAP_SCALE : minLat);

maxLat = (int) ((maxLat < (s.getLocation().getLatitude() * MapStoresController.MAP_SCALE)) ? s.getLocation().getLatitude() * MapStoresController.MAP_SCALE : maxLat);

minLon = (int) ((minLon > (s.getLocation().getLongitude() * MapStoresController.MAP_SCALE)) ? s.getLocation().getLongitude() * MapStoresController.MAP_SCALE : minLon);

maxLon = (int) ((maxLon < (s.getLocation().getLongitude() * MapStoresController.MAP_SCALE)) ? .getLocation().getLongitude() * MapStoresController.MAP_SCALE : maxLon);

}

GeoPoint gp = controller.getUserLocation();

minLat = (minLat > gp.getLatitudeE6()) ? gp.getLatitudeE6() : minLat;

maxLat = (maxLat < gp.getLatitudeE6()) ? gp.getLatitudeE6() : maxLat;

minLon = (minLon > gp.getLongitudeE6()) ? gp.getLongitudeE6() : minLon;

maxLon = (maxLon < gp.getLongitudeE6()) ? gp.getLongitudeE6() : maxLon;

mapView.getController().zoomToSpan((maxLat - minLat), (maxLon - minLon));

mapView.getController().animateTo(new GeoPoint((maxLat + minLat) / 2, (maxLon + minLon) / 2));

}

Basically it just finds the bounds of a box and sets the view to the closest one that encompasses the bounds

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值