当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

通过百度API获取经纬度

发表于: 2012-06-29   作者:as11051105   来源:转载   浏览次数:
摘要: 第一步,先要导入百度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包要放到
第一步,先要导入百度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文件夹下就行了)

第二步,在布局页面里要加上如下代码
<?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" />

通过百度API获取经纬度

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
一:申请百度地图key 申请key网址:http://dev.baidu.com/wiki/static/imap/key/(没有百度账号先注
一:申请百度地图key 申请key网址:http://dev.baidu.com/wiki/static/imap/key/(没有百度账号先注
一:申请百度地图key 申请key网址:http://dev.baidu.com/wiki/static/imap/key/(没有百度账号先注
一:申请百度地图key 申请key网址:http://dev.baidu.com/wiki/static/imap/key/(没有百度账号先注
一:申请百度地图key 申请key网址:http://dev.baidu.com/wiki/static/imap/key/(没有百度账号先注
代码我传到csdn资源库了;http://download.csdn.net/detail/totogo2010/4335701 上篇把界面画出来了
上篇把界面画出来了, 接下来就是显示里面的功能了,那这篇内容就比较丰富了。 主要有这么几道菜:
这篇把 浮动搜索框 ,通过地址名称获取经纬度和详细地址并定位 这些功能加上,算是一个比较完整的地
这篇把 浮动搜索框 ,通过地址名称获取经纬度和详细地址并定位 这些功能加上,算是一个比较完整的地
百度API参考:http://developer.baidu.com/map/reference/index.php?title=Class:%E6%80%BB%E7%B1%BB
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号