Yesterday, initial contact with Baidu's lbs SDK, so that the application can display the map through Mapview, today, based on yesterday's code, to achieve a positioning function:
First Look at it:
The buttons in the lower left corner can be switched into three types:
Normal (Locationmode.normal),
Follow (locationmode.following),
Compass (Locationmode.compass), I believe the use of Baidu map of the students are not unfamiliar with these models.
Here's the code:
Declare a mapview and Baidumap, respectively:
Private Mapview mmapview;private Baidumap Mbaidumap;
to initialize the SDK before Setcontentview:
Sdkinitializer.initialize (Getapplicationcontext ());
to change the location icon:
Mcurrentmarker = Bitmapdescriptorfactory.fromresource (R.drawable.icon_geo); Custom icons//Mcurrentmarker =null; Default icon mbaidumap.setmylocationconfigeration (new Mylocationconfiguration (Mcurrentmode, True, Mcurrentmarker));
Positioning mode:
Private Locationmode Mcurrentmode;
Mcurrentmode = Locationmode.normal; Normal Mode//Mcurrentmode = locationmode.following; Follow pattern//Mcurrentmode = Locationmode.compass; Compass mode mbaidumap.setmylocationconfigeration (new Mylocationconfiguration (Mcurrentmode, True, Mcurrentmarker));
Initialization
Map initialization Mmapview = (Mapview) Findviewbyid (r.id.bmapview); mbaidumap = Mmapview.getmap ();// Turn on the anchor layer mbaidumap.setmylocationenabled (TRUE);//Position initialization mlocclient = new Locationclient (this); Mlocclient.registerlocationlistener (MyListener); locationclientoption option = new Locationclientoption (); Option.setopengps (true);//Open Gpsoption.setcoortype ("Bd09ll "); Set the coordinate type Option.setscanspan (); mlocclient.setlocoption (option); Mlocclient.start ();
Setscanspan is the location interval (ms),The Setcoortype coordinate type is divided into three types:
BD09LL Baidu encryption latitude and longitude coordinates
BD09 Baidu encrypted Mercator coordinates
GCJ02 National Survey Bureau encryption latitude and longitude coordinates
To locate the SDK listener function:
public class Mylocationlistenner implements Bdlocationlistener {@Overridepublic void onreceivelocation (bdlocation Location) {//Map view is not processed after the newly received position is not handled if (locations = = NULL | | mmapview = = NULL) return; Mylocationdata locdata = new Mylocationdata.builder (). Accuracy (Location.getradius ())//Here Set the direction information the developer gets, Clockwise 0-360.direction (+). Latitude (Location.getlatitude ()). Longitude (Location.getlongitude ()). build (); Mbaidumap.setmylocationdata (Locdata); if (isfirstloc) {isfirstloc = false; LATLNG ll = new Latlng (Location.getlatitude (), Location.getlongitude ()); Mapstatusupdate U = mapstatusupdatefactory.newlatlng (ll); Mbaidumap.animatemapstatus (U);}} public void Onreceivepoi (Bdlocation poilocation) {}}
Carbon onpause,onresume,ondestory:
@Overrideprotected void OnPause () {mmapview.onpause (); Super.onpause ();} @Overrideprotected void Onresume () {mmapview.onresume (); Super.onresume ();} @Overrideprotected void OnDestroy () {//Destroy position Mlocclient.stop () on exit,//Close position layer mbaidumap.setmylocationenabled (false); Mmapview.ondestroy (); Mmapview = Null;super.ondestroy ();}
Inin Androidmanifest.xmlDeclaring the service, this step is critical, does not write can not be located:
<service android:name= "com.baidu.location.f" android:enabled= "true" android:process= ": Remote" > </service>
Of course, key is also indispensable, and must be correct:
<meta-data android:name= "Com.baidu.lbsapi.API_KEY" android:value= "************************"/>
Finally, to add the required permissions in the Androidmanifest.xml file:
<!--for Baidumap SDK START-to-<permission android:name= "Android.permission.BAIDU_LOCATION_SERVICE" > & lt;/permission> <uses-permission android:name= "Android.permission.BAIDU_LOCATION_SERVICE" > </ uses-permission> <uses-permission android:name= "Android.permission.ACCESS_NETWORK_STATE" > </ uses-permission> <uses-permission android:name= "Android.permission.ACCESS_COARSE_LOCATION" > </ uses-permission> <uses-permission android:name= "Android.permission.INTERNET" > </uses-permission> <uses-permission android:name= "Android.permission.ACCESS_MOCK_LOCATION" > </uses-permission> <!--&l T;uses-permission android:name= "Android.permission.WRITE_APN_SETTINGS" ></uses-permission> < Uses-permission android:name= "Android.permission.ACCESS_FINE_LOCATION" > </uses-permission> < Uses-permission android:name= "Com.android.launcher.permission.READ_SETTINGS"/> <uses-permission android:name=" Android.permission.WAKE_LOCK "> </uses-permission> <uses-pe Rmission android:name= "Android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name= " Android.permission.ACCESS_WIFI_STATE "/> <uses-permission android:name=" Android.permission.ACCESS_GPS "/> <uses-permission android:name= "Android.permission.READ_PHONE_STATE"/> <uses-permission android:name= " Android.permission.READ_CONTACTS "/> <uses-permission android:name=" Android.permission.CALL_PHONE "/> < Uses-permission android:name= "Android.permission.READ_SMS"/> <uses-permission android:name= " Android.permission.SEND_SMS "/> <!--SDK1.5 need Android.permission.GET_TASKS permissions to determine whether this program is currently running applications? --<uses-permission android:name= "Android.permission.GET_TASKS"/> <uses-permission android:name= "Android Oid.permission.CAMERA "> </uses-permission> <uses-permission android:name=" aNdroid.permission.RECORD_AUDIO "> </uses-permission> <uses-permission android:name=" android.permission . Write_external_storage "> </uses-permission> <uses-permission android:name=" Android.permission.RECEIVE _boot_completed "/> <uses-permission android:name=" Android.permission.BROADCAST_STICKY "/> <uses-permis Sion android:name= "Android.permission.WRITE_SETTINGS"/> <!--call silencing--<uses-permission android:name= "an Droid.permission.PROCESS_OUTGOING_CALLS "> </uses-permission> <uses-permission android:name=" Android.permission.READ_PHONE_STATE "/> <uses-permission android:name=" android.permission.MODIFY_AUDIO_ SETTINGS "/> <!--for baidumap SDK END--
That's it.
Reprint Please specify source: Zhou Mushi's csdn blog Http://blog.csdn.net/zhoumushui
My github: Zhou Mushi's GitHub Https://github.com/zhoumushui
Android uses Baidu lbs SDK (ii) to achieve positioning