.通过百度API获取经纬度
2012-10-25 15:52
465 查看
第一步,先要导入百度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<
b08e
span> 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" />
(附件中的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<
b08e
span> 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" />
相关文章推荐
- 借助百度API通过经纬度获取城市(python实现)
- 利用百度API(js),怎样通过地址获取经纬度
- 通过百度API获取经纬度
- java工具类(一)之服务端java实现根据地址从百度API获取经纬度
- (java功能篇)通过百度获取IP地址对应的经纬度
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
- 百度api根据经纬度获取地址
- java工具类(一)之服务端java实现根据地址从百度API获取经纬度
- android百度离线地图可以通过经纬度获取当前地理信息么(不联网的情况下)
- GOOGLE MAP API 如何通过经纬度获取地址信息?
- 通过经纬度获取yahoo天气 API
- 通过地址获得经纬度(百度Geocoding API)
- 百度map api并未公开获取站点坐标经纬度的api接口,通过logger2js分析百度地图api源码,找出获取某条公交线各个站点经纬度的未公开方法。
- java根据地址获取百度API经纬度
- 百度api获取经纬度及详细位置
- android百度离线地图可以通过经纬度获取当前地理信息么(不联网的情况下)
- Android通过原生APi获取所在位置的经纬度
- 服务端java实现根据地址从百度API获取经纬度
- 百度开发者API接口:获取经纬度和详细地理位置(Geocoding API和IP定位API)
- 通过百度API回放经纬度记录的信息(DEMO)