通过百度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
(附件中的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
相关文章推荐
- .通过百度API获取经纬度
- 利用百度API(js),怎样通过地址获取经纬度
- 借助百度API通过经纬度获取城市(python实现)
- GOOGLE MAP API 如何通过经纬度获取地址信息?
- 通过地址获得经纬度(百度Geocoding API)
- 利用百度api技术获取客户端IP地址经纬度及所在城市位置
- C#使用百度API通过IP获取地理位置和坐标
- android百度离线地图可以通过经纬度获取当前地理信息么(不联网的情况下)
- 百度通过经纬度获取地址
- 百度api获取经纬度及详细位置
- 获取经纬度api使用心得【对比百度,谷歌地图API】
- 通过百度API获取公交数据导入ArcSDE
- 通过百度获取IP地址对应的经纬度
- 百度api根据经纬度获取地址
- java根据地址获取百度API经纬度
- java工具类(一)之服务端java实现根据地址从百度API获取经纬度
- .net根据经纬度获取地址(百度api)
- Android调用百度api 获取经纬度以及地图 demo你怎么可以那么坑我????
- Javascript获取经纬度,关于调用百度API的问题
- 通过百度API回放经纬度记录的信息(DEMO)