Osmdroid 是一款完全开源的地图基本操作SDK,包含了多种的基础图层:覆盖层(overlay)、点图层(可包含多点)、线(只能包含单条Polyline)、面(只能包含单个Polygon)、底图图层。
github
https://github.com/osmdroid/osmdroid
开发者文档
https://osmdroid.github.io/osmdroid/
API
https://wiki.openstreetmap.org/wiki/Zh-hans:API_v0.6
Overlay的在开发者手中最大的作用就是可塑性极高,因为它是最基础的覆盖物对象。开发者可通过对Overlay的扩展实现新的覆盖物类型,满足不同的需求。
//Mini map
mMinimapOverlay = new MinimapOverlay(context, mMapView.getTileRequestCompleteHandler());
mMinimapOverlay.setWidth(dm.widthPixels / 5);
mMinimapOverlay.setHeight(dm.heightPixels / 5);
mMapView.getOverlays().add(this.mMinimapOverlay);
//My Location
//note you have handle the permissions yourself, the overlay did not do it for you
mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(context), mMapView);
mLocationOverlay.enableMyLocation();
mMapView.getOverlays().add(this.mLocationOverlay);
//map scale
mScaleBarOverlay = new ScaleBarOverlay(mMapView);
mScaleBarOverlay.setCentred(true);
mScaleBarOverlay.setScaleBarOffset(dm.widthPixels / 2, 10);
mMapView.getOverlays().add(this.mScaleBarOverlay);
//On screen compass
mCompassOverlay = new CompassOverlay(context, new InternalCompassOrientationProvider(context),
mMapView);
mCompassOverlay.enableCompass();
mMapView.getOverlays().add(this.mCompassOverlay);
//support for map rotation
mRotationGestureOverlay = new RotationGestureOverlay(mMapView);
mRotationGestureOverlay.setEnabled(true);
mMapView.getOverlays().add(this.mRotationGestureOverlay);
这是项目中用到的基础覆盖物添加,可以根据自己的需求重写,特别是定位。