【问题标题】:How do I show all of my markers in googlemaps android?如何在 google maps android 中显示我的所有标记?
【发布时间】:2011-08-29 00:24:17
【问题描述】:

我有一组纬度和经度点。我用它们在地图上做标记。我该怎么做才能同时显示地图上的所有标记。例如,很好地拟合,如果标记在城市内,我将其放大以仅显示城市而不是整个州、国家等...

谢谢

【问题讨论】:

    标签: android google-maps zooming


    【解决方案1】:

    这样的事情可能会有所帮助

    private void centerGroup(int groupId){
        if(groupId>0){
            int minLat = Integer.MAX_VALUE;
            int maxLat = Integer.MIN_VALUE;
            int minLon = Integer.MAX_VALUE;
            int maxLon = Integer.MIN_VALUE;
    
    
            Cursor cursor = getYourLantLongs(groupId);
    
            if (cursor.moveToFirst()){
                final int LAT_INDEX = cursor.getColumnIndex(T.Waypoints.LATITUDE);
                final int LON_INDEX = cursor.getColumnIndex(T.Waypoints.LONGITUDE);
    
                do {
                    final int lat = (int) (cursor.getFloat(LAT_INDEX)*1E6);
                    final int lon = (int) (cursor.getFloat(LON_INDEX)*1E6);
    
                    maxLat = Math.max(lat, maxLat);
                    minLat = Math.min(lat, minLat);
                    maxLon = Math.max(lon, maxLon);
                    minLon = Math.min(lon, minLon);
    
                } while(cursor.moveToNext());
    
    
                mapController.zoomToSpan(Math.abs(maxLat - minLat), Math.abs(maxLon - minLon));
                mapController.animateTo(new GeoPoint((maxLat + minLat)/2, (maxLon + minLon)/2 ));
    
                /*
                final int cLat =  (int)((maxLat*1E6 + minLat*1E6)/2);
                final int cLon =  (int)((maxLon*1E6 + minLon*1E6)/2);
    
                final int zLat =  (int)Math.abs(maxLat - minLat);
                final int zLon =  (int)Math.abs(maxLon - minLon);
    
                //mapController.zoomToSpan(zLat, zLon);
                mapController.animateTo(new GeoPoint(cLat, cLon));
                 */
            }
        }           
    }
    

    简而言之,您可以制作一个正方形并放大。

    【讨论】:

    • 我正在考虑这个,但我没有意识到有 zoomtospan 功能。非常感谢!
    • 附言。考虑将mapView改成MapController mapController=mapView.getontroller(),在mapview类中没有找到zoomtospan功能时有点混乱。
    • 啊,那是复制粘贴时编辑的遗漏!我正在使用mapview-proxy。我已将其更改为 mapController。
    【解决方案2】:

    遍历您的数组并保存纬度和经度的最小值和最大值。 然后使用

    mMapController.zoomToSpan((maxLatitude - minLatitude), (maxLongitude - minLongitude));
    

    以获得正确的缩放级别。还有

    mMapController.animateTo(new GeoPoint(
    
                                    (maxLatitude + minLatitude)/2 ,
    
                                    (maxLongitude + minLongitude)/2 ));
    

    将地图移动到标记的中心。

    玩得开心!

    【讨论】:

      猜你喜欢
      • 2017-02-16
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2014-10-10
      • 1970-01-01
      • 2013-01-12
      相关资源
      最近更新 更多