mapabc地图开发之定位篇(GPS+谷歌基站定位+高德基站定位)

android地图应用的开发,相信大家在网上都看过不少例子

不过基本上都是基于google地图的,有一点不好的是基于google地图开发的应用

不是每部手机都能够装的上去,要求设备系统本身支持google地图库才行

而如果采用高德公司的mapabc地图则摆脱了这种限制

下面本人就以基于mapabc的地图应用来阐述如何在地图上显示自身位置

为了让广大开发者方便将原有的google地图应用移植到mapabc上来

高德公司开发了与google map API相同的类与方法,基本上只要改变导入的包即可完成移植

稍后我会将mapabcAPI相关文档同工程一并上传

废话不多说,先上几张效果图:

 

本例主要是获取自身经纬度,纠偏后在地图上显示图标

同时通过相应接口获取地理位置信息,点击位置图标弹出气泡显示地理位置信息

在获取自身经纬度有多种方式,android API里提供的LocationManager就可以通过GPS 或 网络 获取位置

不过使用该类的前提是设备上相关的设置选项要打开,否则是监听不到位置信息的

除此之外我们还可以获取基站信息然后通过google提供的基站定位接口来获取到经纬度

同时使用mapabc的话还可直接通过其提供的LocationManagerProxy类来监听获取位置

值得注意的是此时得到的位置已经是纠偏后的位置了

本例分别以以上三种定位方式获取位置然后在地图上显示

同时可通过菜单来比对基站定位与实际GPS定位的误差(在室外打开GPS选项来测试)

本人亲测google基站定位要比高德基站定位准一些,一般误差在一两百米以内

google到底是老大,不过纠偏的话当然还是高德准啦,自家的地图自家的算法

下面贴上部分源码稍作分析

且看主ACTIVITY有以下成员变量

public class TestMapABCDemoActivity extends MapActivity{

    /** Called when the activity is first created. */

    private final static String TAG = "TestMapABCDemoActivity";

    

    private MapView mMapView;                                   //地图VIEW

    private MapController mMapController;                       //控制器

    private List<Overlay> mOverlayList;                           //地图图层容器

    private View mPopView;                                      //地图气泡

    private MyLocationManager mLocationManager;                     // LocationManager API获取位置

    private MyLocationListen mListen;                       

    private MyPositionOverlay mGoogleOverlay;

    

    

    private MyStationLocationManager mStationLocationManager;       //google基站接口获取位置

    private MyStationLocationListen mStationLocationListen;

    private MyPositionOverlay mStationOverlay;

    

    

    

    private MyGaodeLocationManager mGaodeLocationManager;           //高德基站接口获取位置

    private MyGaodeListen mGaodeLocationListen;

    private MyPositionOverlay mGaoDeOverlay;

    

    private Handler mHandler;


初始化调以下两个方法

 

    public void initView()

    {

        mMapView = (MapView) findViewById(R.id.main_mapView);

        mMapView.setBuiltInZoomControls(true);              // 设置启用内置的缩放控件

        mMapController = mMapView.getController();          // 得到mMapView的控制权,可以用它控制和驱动平移和缩放

        mOverlayList = mMapView.getOverlays();              // 得到图层容器

        

    

        // 设置气泡位置

        mPopView = getLayoutInflater().inflate(R.layout.map_popup, null);

        mMapView.addView(mPopView,new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, 

                                                            MapView.LayoutParams.WRAP_CONTENT,

                                                            null,

                                                            MapView.LayoutParams.BOTTOM_CENTER));  

        mPopView.setVisibility(View.GONE);

        

        

        // android API定位自身位置图标

        mGoogleOverlay = new MyPositionOverlay(this, getResources().getDrawable(R.drawable.marker_google), mPopView, mMapView); 

        mGoogleOverlay.setColor(Color.argb(50, 0, 119, 192));

        mOverlayList.add(mGoogleOverlay);

        

        // google基站定位自身位置图标

        mStationOverlay = new MyPositionOverlay(this, getResources().getDrawable(R.drawable.marker_station) , mPopView, mMapView);  

        mStationOverlay.setColor(Color.argb(50, 255, 100, 55));

        mOverlayList.add(mStationOverlay);

        

        // 高德基站定位自身位置图标

        mGaoDeOverlay = new MyPositionOverlay(this, getResources().getDrawable(R.drawable.marker_gaode),  mPopView, m

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值