android osmdroid 实现谷歌地图之定位 替换为其他

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

 

 

你可能感兴趣的:(Android,必备知识)