【问题标题】:Center and zoom Android MapView around a group of markers?围绕一组标记居中和缩放Android MapView?
【发布时间】:2012-07-14 01:40:36
【问题描述】:

我有一个 mapView,其中有几个用标记绘制的点,每个点都有不同的纬度和经度,它们可能在附近也可能不在附近。有没有办法让 MapView 打开到最深的缩放级别,使屏幕上的所有点集中在一起?

我知道 mapController 有一个 setZoom 和 setCenter 属性,但是如何确定这些方法的值呢?还是有其他更简单的方法来实现这一点?

【问题讨论】:

标签: google-maps android-mapview


【解决方案1】:

在你的 MapView 中,在你的 ImtemizedOverlay 中添加你的 overlayItems 之后,像这样:

GeoPoint aGeoPoint = new GeoPoint((int)(latitude * 1E6), (int)(longitude * 1E6));
OverlayItem aOverlayItem = new OverlayItem(aGeoPoint, "Auto", "Auto");
locationsItemizedOverlay.addOverlay(aOverlayItem);

试试这个:

    // Center map in geopoints
    GeoPoint point = locationsItemizedOverlay.getCenterPoint();

    int latSpan = locationsItemizedOverlay.getLatSpanE6();
    int longSpan = locationsItemizedOverlay.getLonSpanE6();

    mapView.getController().setCenter(point);
    mapView.getController().zoomToSpan((int)(latSpan * Constants.MAP_ZOOM_FACTOR), (int)(longSpan * Constants.MAP_ZOOM_FACTOR));

在您覆盖的 ItemizedOverlay 中:

public GeoPoint getCenterPoint() {
    if(center == null) {
        int northEdge = -90000000; // i.e., -90E6 microdegrees
        int southEdge = 90000000;
        int eastEdge = -180000000;
        int westEdge = 180000000;

        Iterator<OverlayItem> iterator = overlayItemsArrayList.iterator();
        while(iterator.hasNext()) {
            GeoPoint geoPoint = iterator.next().getPoint();

            if(geoPoint.getLatitudeE6() > northEdge)
                northEdge = geoPoint.getLatitudeE6();

            if(geoPoint.getLatitudeE6() < southEdge)
                southEdge = geoPoint.getLatitudeE6();

            if(geoPoint.getLongitudeE6() > eastEdge)
                eastEdge = geoPoint.getLongitudeE6();

            if(geoPoint.getLongitudeE6() < westEdge)
                westEdge = geoPoint.getLongitudeE6();
        }

        center = new GeoPoint((int)((northEdge + southEdge) / 2), (int)((westEdge + eastEdge) / 2));
    }

    return center;
}

希望对你有帮助。

【讨论】:

  • 该死,我无法想象,没有投票。反响不错。非常有用。
  • 至少,我为此赢得了一枚铜牌! :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 2011-07-31
  • 2015-07-10
相关资源
最近更新 更多