第一步,先要导入百度API的架包libBMapApiEngine_v1_3_3.so和baidumapapi.jar,且libBMapApiEngine_v1_3_3.so包要放到armeabi文件夹下,armeabi和baidumapapi.jar平级。
(附件中的libBMapApiEngine_v1_3_3.zip要解压,解压后把libBMapApiEngine_v1_3_3.so包要放到armeabi文件夹下就行了)
第二步,在布局页面里要加上如下代码
第三步:写代码
最后:添加权限
(附件中的libBMapApiEngine_v1_3_3.zip要解压,解压后把libBMapApiEngine_v1_3_3.so包要放到armeabi文件夹下就行了)
第二步,在布局页面里要加上如下代码
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <!-- 使用百度API定位,必须要定义MapView,但又不需要显示 -->
- <com.baidu.mapapi.MapView
- android:id="@+id/map_View"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:clickable="true"
- android:visibility="gone"
- />
- <TextView
- android:id="@+id/lat"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="纬度:" />
- <TextView
- android:id="@+id/lon"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="经度:" />
- </LinearLayout>
- import android.location.Location;
- import android.os.Bundle;
- import android.widget.TextView;
- import com.baidu.mapapi.BMapManager;
- import com.baidu.mapapi.LocationListener;
- import com.baidu.mapapi.MKLocationManager;
- import com.baidu.mapapi.MapActivity;
- /**
- * 创建Activity(继承com.baidu.mapapi.MapActivity)
- */
- public class LocationActivity extends MapActivity implements LocationListener {
- private BMapManager mapManager;
- private MKLocationManager mLocationManager = null;
- private TextView latText;
- private TextView lonText;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- latText = (TextView) findViewById(R.id.lat);
- lonText = (TextView) findViewById(R.id.lon);
- // 初始化MapActivity
- mapManager = new BMapManager(getApplication());
- // init方法的第一个参数需填入申请的API Key
- mapManager.init("285B415EBAB2A92293E85502150ADA7F03C777C4", null);
- super.initMapActivity(mapManager);
- mLocationManager = mapManager.getLocationManager();
- // 注册位置更新事件
- mLocationManager.requestLocationUpdates(this);
- // 使用GPS定位
- mLocationManager.enableProvider((int) MKLocationManager.MK_GPS_PROVIDER);
- }
- @Override
- protected boolean isRouteDisplayed() {
- return false;
- }
- @Override
- protected void onDestroy() {
- if (mapManager != null) {
- mapManager.destroy();
- mapManager = null;
- }
- mLocationManager = null;
- super.onDestroy();
- }
- @Override
- protected void onPause() {
- if (mapManager != null) {
- mapManager.stop();
- }
- super.onPause();
- }
- @Override
- protected void onResume() {
- if (mapManager != null) {
- mapManager.start();
- }
- super.onResume();
- }
- /**
- * 根据MyLocationOverlay配置的属性确定是否在地图上显示当前位置
- */
- @Override
- protected boolean isLocationDisplayed() {
- return false;
- }
- /**
- * 当位置发生变化时触发此方法
- *
- * @param location 当前位置
- */
- @Override
- public void onLocationChanged(Location location) {
- if (location != null) {
- // 显示定位结果
- lonText.setText("当前经度:" + location.getLongitude());
- latText.setText("当前纬度:" + location.getLatitude());
- }
- }
- }
- <!-- 访问网络的权限 -->
- <uses-permission android:name="android.permission.INTERNET" />
- <!-- 访问精确位置的权限 -->
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
- <!-- 访问网络状态的权限 -->
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <!-- 访问WIFI网络状态的权限 -->
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
- <!-- 改变WIFI网络状态的权限 -->
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
- <!-- 读写存储卡的权限 -->
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <!-- 读取电话状态的权限 -->
- <uses-permission android:name="android.permission.READ_PHONE_STATE" />