osmdroid 显现自己的位置图标是通过GPS,虽然提供了接口替换为其他,但是不知道为什么我没有试成功。
下面通过另一种方式实现 通过百度定位显示个人图标。
原始实现 默认的个人定位图标。
// if (mLocationOverlay==null){
// mLocationOverlay= new MyLocationNewOverlay(mMapView);
// Bitmap bitmap = MyUtils.zoomImg(BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.renyuan), 80, 80);
//
// mLocationOverlay.setDirectionArrow(bitmap,
// ((BitmapDrawable)
// mMapView.getContext().getResources().getDrawable(org.osmdroid.library.R.drawable.person)).getBitmap());
// }
// mMapView.getOverlays().add(mLocationOverlay);
// mLocationOverlay.enableMyLocation(); //设置可视
通过 自己实现 IMyLocationProvider这个接口理论可以实现 定位,但是我个人尝试的时候并没有实现。
不过好在
Marker可以不断设计位置。所有可以不断维护一个Marker,不断设置位置就可以了。所以
/**
*
设置个人新的位置
* @return
*/
public void setMyLocationInfo(GeoPoint latLng){
if (latLng == null) return;
initLocationMarker();
mLocationMarker.setPosition(latLng);
setPositionCenter(latLng);
}
private void initLocationMarker() {
if (mLocationMarker!=null){
return;
}
mLocationMarker = new Marker(mMapView);
mLocationMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
mLocationMarker.setInfoWindow(null);
Bitmap bitmap = MyUtils.zoomImg(BitmapFactory.decodeResource(mContext.getResources(),R.mipmap.renyuan), 300, 300);
BitmapDrawable bd= new BitmapDrawable(bitmap);
mLocationMarker.setIcon(bd);
mMapView.getOverlays().add(mLocationMarker);
}
/**
* 设置中心点
*/
public void setPositionCenter(GeoPoint latLng) {
mMapView.getController().setCenter(latLng);
}