Android uses Baidu lbs SDK (ii) to achieve positioning

Source: Internet
Author: User

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

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.