0
我有一个经度和纬度点的数组。我用它们在地图上制作标记。我能做什么来同时显示地图上的所有标记。例如做一个不错的选择,这样,如果该标记是一个城市内的我,只显示城市,而不是整个州,国家等放大它...如何在googlemaps android中显示我的所有标记?
感谢
我有一个经度和纬度点的数组。我用它们在地图上制作标记。我能做什么来同时显示地图上的所有标记。例如做一个不错的选择,这样,如果该标记是一个城市内的我,只显示城市,而不是整个州,国家等放大它...如何在googlemaps android中显示我的所有标记?
感谢
这样的事情可能会帮助
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));
*/
}
}
}
总之您在一个正方形和变焦。
通过您的阵列快去救救分钟和纬度和经度的最大值。 然后使用
mMapController.zoomToSpan((maxLatitude - minLatitude), (maxLongitude - minLongitude));
得到正确的缩放级别。并且
mMapController.animateTo(new GeoPoint(
(maxLatitude + minLatitude)/2 ,
(maxLongitude + minLongitude)/2));
将地图移动到标记的中心。
玩得开心!
我在想,但我不知道有一个zoomtospan功能。非常感谢! – Sean
PS。考虑将mapView更改为MapController mapController = mapView.getontroller(),当我没有在mapview类中找到zoomtospan特征时,有点困惑。 – Sean
啊,这是在编辑时忽略复制粘贴!我正在使用mapview-proxy。我已将其更改为mapController。 – Samuel