您的位置:首页 > 其它

通过百度API获取经纬度

2014-10-05 12:17 381 查看
第一步,先要导入百度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文件夹下就行了)

第二步,在布局页面里要加上如下代码

Java代码


<?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>

第三步:写代码

Java代码


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());

}

}

}

最后:添加权限

Java代码


<!-- 访问网络的权限 -->

<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" />

baidumapapi.jar (231.5 KB)
下载次数: 92

libBMapApiEngine_v1_3_3.zip (593.8 KB)
下载次数: 134

location.zip (857.7 KB)
下载次数: 232
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: