Как мне показать все мои маркеры в googlemaps android? - PullRequest
0 голосов
/ 29 августа 2011

У меня есть массив точек широты и долготы. Я использую их, чтобы сделать маркеры на карте. Что я могу сделать, чтобы показать все маркеры на карте одновременно. например, подгоните его так, чтобы, если маркеры были в городе, я увеличивал его, чтобы показать только город, а не весь штат, страну и т. д. *

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 августа 2011

что-то вроде этого может помочь

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));
             */
        }
    }           
}

короче вы делаете квадрат и увеличиваете масштаб.

1 голос
/ 29 августа 2011

Просмотрите ваш массив и сохраните минимальное и максимальное значения широты и долготы.Затем используйте

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

, чтобы получить правильный уровень масштабирования.И

mMapController.animateTo(new GeoPoint(

                                (maxLatitude + minLatitude)/2 ,

                                (maxLongitude + minLongitude)/2 ));

, чтобы переместить карту в центр ваших маркеров.

Получайте удовольствие!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...