你的位置:首页 > 操作系统

[操作系统]通过百度地图API显示当前位置在地图上(图标显示)


1.下载百度地图的demo,下载地址:http://lbsyun.baidu.com/sdk/download?selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar

2.把demo里面的BaiduMapsApiDemo解压,把BaiduMapsApiDemo文件夹里面的libs里面的所有文件都复制到自己的项目的libs里面

3.配置AndroidManifest.

这是我配置好的例子的AndroidManifest.

 1 <??> 2 <manifest ="http://schemas.android.com/apk/res/android" 3   package="com.zzw.baidumappoint" 4   android:versionCode="1" 5   android:versionName="1.0" > 6  7   <uses-sdk 8     android:minSdkVersion="14" 9     android:targetSdkVersion="21" />10 11   <application12     android:allowBackup="true"13     android:icon="@drawable/ic_launcher"14     android:label="@string/app_name"15     android:theme="@style/AppTheme" >16     <activity17       android:name=".MainActivity"18       android:label="@string/app_name" >19       <intent-filter>20         <action android:name="android.intent.action.MAIN" />21 22         <category android:name="android.intent.category.LAUNCHER" />23       </intent-filter>24     </activity>25 26     <meta-data27       android:name="com.baidu.lbsapi.API_KEY"28       android:value="tpBieaHroLK1LeSkOQWLzq6A" />29 30     <service31       android:name="com.baidu.location.f"32       android:enabled="true"33       android:process=":remote" >34     </service>35   </application>36 37   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >38   </uses-permission>39   <uses-permission android:name="android.permission.INTERNET" >40   </uses-permission>41   <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />42   <uses-permission android:name="android.permission.WAKE_LOCK" >43   </uses-permission>44   <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />45   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />46   <!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? -->47   <uses-permission android:name="android.permission.GET_TASKS" />48   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >49   </uses-permission>50   <uses-permission android:name="android.permission.WRITE_SETTINGS" />51   <!-- 这个权限用于进行网络定位 -->52   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >53   </uses-permission>54   <!-- 这个权限用于访问GPS定位 -->55   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >56   </uses-permission>57   <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->58   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >59   </uses-permission>60   <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->61   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >62   </uses-permission>63   <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->64   <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >65   </uses-permission>66   <!-- 用于读取手机当前的状态 -->67   <uses-permission android:name="android.permission.READ_PHONE_STATE" >68   </uses-permission>69   <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->70   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >71   </uses-permission>72   <!-- 访问网络,网络定位需要上网 -->73   <uses-permission android:name="android.permission.INTERNET" />74   <!-- SD卡读取权限,用户写入离线定位数据 -->75   <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >76   </uses-permission>77   <!-- 允许应用读取低级别的系统日志文件 -->78   <uses-permission android:name="android.permission.READ_LOGS" >79   </uses-permission>80 81 </manifest>

AndroidManifest.

4.代码:

activity_main.

 1 <RelativeLayout ="http://schemas.android.com/apk/res/android" 2   ="http://schemas.android.com/tools" 3   android:layout_width="match_parent" 4   android:layout_height="match_parent" 5   tools:context="com.zzw.baidumappoint.MainActivity" > 6  7   <com.baidu.mapapi.map.MapView 8     android:id="@+id/mapView" 9     android:layout_width="match_parent"10     android:layout_height="match_parent" />11 12 </RelativeLayout>

 

 

MainActivity.java:

 1 package com.zzw.baidumappoint; 2  3 import com.baidu.location.BDLocation; 4 import com.baidu.location.BDLocationListener; 5 import com.baidu.location.LocationClient; 6 import com.baidu.location.LocationClientOption; 7 import com.baidu.mapapi.SDKInitializer; 8 import com.baidu.mapapi.map.BaiduMap; 9 import com.baidu.mapapi.map.MapStatusUpdate;10 import com.baidu.mapapi.map.MapStatusUpdateFactory;11 import com.baidu.mapapi.map.MapView;12 import com.baidu.mapapi.map.MyLocationData;13 import com.baidu.mapapi.model.LatLng;14 15 import android.app.Activity;16 import android.os.Bundle;17 18 public class MainActivity extends Activity {19 20   private LocationClient mLocationClient;21   private BaiduMap mBaiduMap;22 23   @Override24   protected void onCreate(Bundle savedInstanceState) {25     super.onCreate(savedInstanceState);26     SDKInitializer.initialize(getApplicationContext());//是程序不崩溃的作用27     setContentView(R.layout.activity_main);28 29     // 获取LocationClient30     mLocationClient = new LocationClient(this);31     32     LocationClientOption option = new LocationClientOption();33     option.setCoorType("bd09ll");34     mLocationClient.setLocOption(option);35 36     // 获取BaiduMap37     MapView mapView = (MapView) findViewById(R.id.mapView);38     mBaiduMap = mapView.getMap();39 40     // 显示出当前位置的小图标41     mBaiduMap.setMyLocationEnabled(true);42 43     MyLocationListener mListener = new MyLocationListener();44     mLocationClient.registerLocationListener(mListener);45     mLocationClient.start();46   }47   48   @Override49   protected void onDestroy() {50     mLocationClient.stop();51     super.onDestroy();52   }53 54   private class MyLocationListener implements BDLocationListener {55 56     @Override57     public void onReceiveLocation(BDLocation location) {58 59       // 只是完成了定位60       MyLocationData locData = new MyLocationData.Builder().latitude(location.getLatitude())61           .longitude(location.getLongitude()).build();62 63       //设置图标在地图上的位置64       mBaiduMap.setMyLocationData(locData);65       66       // 开始移动百度地图的定位地点到中心位置67       LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());68       MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16.0f);69       mBaiduMap.animateMapStatus(u);70     }71 72   }73 74 }