Android百度地图开发

之前本来是想基于Google开发地图的,但是由于各种问题,最后还是放弃了(最蛋疼的就是apikey的获取,要么上不了google,要么访问超卡,还有各种问题,最后不得不放弃),然后转到百度,不过百度官方的api有些许问题是令人比较郁闷的。先到百度的官方api上面取apikey,网址是http://developer.baidu.com/map/。官方提供的api有现成的Demo,也就是HelloWorld,但是直接照着api开发的地图是无法定位的,目前能找到的原因大致如下:

1、baidumapapi_v2_1_2.jar以前是有MapActivity的,它的布局文件是这样的:

  1.             <com.baidu.mapapi.map.mapview android:id="@+id/bmapsView"  
  2.                     android:layout_width="fill_parent"  
  3.                     android:layout_height="fill_parent"  
  4.                     android:clickable="true" /> 
它的mapview是小写的,这个在之前的版本是可以运行的,你若是2.1的jar包,而参照代码是之前版本的话这个是不能运行的,正确的代码如下:

  1.  <com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"  
  2.                     android:layout_width="fill_parent"  
  3.                     android:layout_height="fill_parent"  
  4.                     android:clickable="true" />     

在导包的时候可以先打开百度的jar包确认下,在工程中找到baidumapapiXX.jar,里面有相应的包:




里面有MapView这个类,类似的,不管版本如何,在导入类之前先看看jar里面,这样可以减少出错的概率。
布局写好了接下来就是代码实现了,还是老问题,版本哪!   百度baidumapapi_v2_1_2中去掉了定位用的MapActivity这个类,用了 LocationClient.java这个类
具体的可以参照定位sdk,网址http://developer.baidu.com/map/geosdk-android-classv2.x.htm,感觉MapActivity比这个好用点,主要是比较简单。
另外还有一点就是Manifest中的权限问题,官方的api中好像没有指出来(不知道是不是我没仔细看),在里面要加入一个定位的service
 <service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:permission="android.permission.BAIDU_LOCATION_SERVICE"
            android:process=":remote" >
            <intent-filter>
                <action android:name="com.baidu.location.service_v3.1" >
                </action>
            </intent-filter>
        </service>
总结起来大概就是2个问题,第一是版本问题,这个问题仔细点的话虽然不可避免,但是能够搞定;第二就是权限问题,这个问题很郁闷,太隐蔽了,log里面没有什么提示。代码没贴是因为毕竟官方给的指导文档已经非常全面了,只要有点基础的仔细看下基本上都会。这两个问题通常都是相对来说比较常见,尤其对于我们刚刚接触地图开发的人来说,尤其是第二个问题,我的代码一直可以运行但是无法定位,找了很多资料才发现有这样一段权限,如果你也在开发地图当中遇到了类似的问题,不妨对照着找下原因。



你可能感兴趣的:(android,百度,定位,地图)