我有一系列纬度和经度点。我用它们在地图上制作标记。我该怎么做才能同时在地图上显示所有标记。例如,如果标记在一个城市内,我会放大它只显示城市,而不是整个州,国家等...
由于
答案 0 :(得分:2)
这样的事情可能会有所帮助
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 :(得分:1)
浏览阵列并保存纬度和经度的最小值和最大值。 然后使用
mMapController.zoomToSpan((maxLatitude - minLatitude), (maxLongitude - minLongitude));
获得正确的缩放级别。并且
mMapController.animateTo(new GeoPoint(
(maxLatitude + minLatitude)/2 ,
(maxLongitude + minLongitude)/2 ));
将地图移动到标记的中心。
玩得开心!