百度地图SDK-真正意义上的地图

百度地图SDK-真正意义上的地图

在上篇博客里面,我讲述了通过实例化LocationClient对象进行定位,在获取一系列的权限申请之后,调用LocationClient对象的start()方法开启定位,以及定位的返回到监听器里面,成了一个带位置信息的BDlocation对象,接着我们又在监听器里面通过一系列的方法,如getLatitude()获取纬度,getLongitude()获取经度,变成我们可以认识的位置信息。

不过,仅仅是文字信息的地理描述并不是我们想要的结果,我们接下来就需要继续完善,使得可以在看到地图,并且可以找到自己的位置。

首先,我们需要把布局文件里面的TextView控件删除,当然,也可以通过设置Layout:Visibility=”gone”,然后就是添加一个MapView控件,注意包名我们要写完整。

<com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true" />

然后我们就需要在活动里面进行操作了。首先我们需要实例化一个MapView对象.

private MapView mapView;
****
mapView = (MapView) findViewById(R.id.bmapView);

此时运行的话,我们在手机上首先看到的是北京市的地图,但是并不能找到自己的位置。
这里写图片描述

如果有谁只能看到无数个白色格子,那么你就需要看看申请key的时候有没有填错信息,我就遇到过这种情况,重新填了下SHA1,和包名,就OK了。

接下来,我们就需要在地图上找到自己的位置信息。

我们需要通过MapView的getMap()方法来得到BaiduMap这个核心管理类。

 private BaiduMap baiduMap;
 baiduMap = mapView.getMap();
        //BaiduMap是地图的总控制器

我们这里要用到LatLng这个类,通过向它的构造方法中传入自己的经纬度信息来实例化它,接着再通过MapStatusUpdateFacotory的newLatLng()方法来得到一个MapStatueUpdate对象,接着把MapStatueUpdate对象作为参数传入到BaiduMap管理类中的animateMapStatus()方法当中,此时我们就可以在地图上看到自己所在区域了。但是还是无法看到自己的位置,前几天按照郭霖老师的代码写上去之后,发现打开软件之后看到的认识北京市的地图,仔细比对了老师带的代码,发现老师用了两次animateMapStatus()方法
这里写图片描述
感觉第一次的animateMapStatus()方法传入的经纬度信息被缩放信息给覆盖了。所以打上去之后我们看到的是北京市的默认地图。

自己所在的区域显示出来了,接下来自然是如何找到自己的位置了,同样百度地图也提供了MyLocationData这个类来帮助我们。

首先我们需要MyLocationData.Builder()来实例化MyLocationData对象,然后为这个对象添加一系列数据。

MyLocationData data=new MyLocationData.Builder()//
        .accuracy(location.getRadius())//
        .latitude(location.getLatitude())//
        .longitude(location.getLongitude()).build();
        baiduMap.setMyLocationData(data);
        //让自己显示在地图上

然后我们运行,看下效果到底是怎样的
这里写图片描述
齐齐哈尔市也是一个不错的地方,大家有机会可以来扎龙湿地看看。
到这里我们就已经把这篇博客的内容讲完了,其实我也是新手一枚,如果有童鞋对安卓开发感兴趣的话,我们可以共同学习。
这里写图片描述

发布了37 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/OneLinee/article/details/78289163
今日推荐