`
104zz
  • 浏览: 1503699 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

android 基于百度地图api获取经纬度

阅读更多

 

:申请百度地图key

申请key网址:http://dev.baidu.com/wiki/static/imap/key/(没有百度账号先注册账号)

二 :下载百度地图androidapi  

      http://dev.baidu.com/wiki/static/imap/files/android/BaiduMapApi_Lib_Android_1.3.3.zip

 

三:api库的使用:

1.解压后将baidumapapi.jar添加在项目Libraries里,将libBMapApiEngine_v1_3_3.so复制到工程目录下的libs\armeabi(没有这两个文件夹自己在项目根目录下创建)

2. 地图、定位、搜索功能都需要BMapManager来管理,BMapManager提供四个接口,init, start, stop, destroy。建议在Application里生成BMapManager对象并初使化,在程序退出时调用destory,在需要使用sdk功能的activityonCreate里调用start, onDestroy调用stop,或者onResume/onPause分别调用startstop

 

四:创建main.xml文件,注意MapView空间必须是com.baidu.mapapi.MapView

 

<?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" >
           <com.baidu.mapapi.MapView
            android:id="@+id/map_view"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:clickable="true"
            android:enabled="true" />
   </LinearLayout>
 

 

五:新建LocationActivity.java (继承com.baidu.mapapi.MapActivity),如下:

package com.location.activity;

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("C66C0501D0280744759A6957C42543AE38F5D540", 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 当前位置
	 */
	public void onLocationChanged(Location location) {
		if (location != null) {
			// 显示定位结果
			lonText.setText("当前经度:" + location.getLongitude());
			latText.setText("当前纬度:" + location.getLatitude());
		}
	}
}
   

 

六:在AndroidManifest.xml中要添加访问网络和启动定位等的几个权限

 

<!-- 访问网络的权限 -->
    <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" />
 

 

 

七:运行效果如下图:


 

 

  • 大小: 18 KB
分享到:
评论
5 楼 lmm90 2013-05-30  
lz,运行不起来。
4 楼 jcl0618 2012-12-04  
那这个获取经纬度的方法可以写成一个公共的方法么?其他的需要用到经纬度的时候直接调用这个方法就可以了!
3 楼 相敬如宾 2012-11-12  
非常感谢!正好用到。
2 楼 104zz 2012-10-07  
guohailing 写道
拜托怎样做才能获取的不是经纬度而是它所对应的地理位置名称啊

在这篇博客中有 android 基于百度地图api开发定位以及获取详细地址
1 楼 guohailing 2012-10-05  
拜托怎样做才能获取的不是经纬度而是它所对应的地理位置名称啊

相关推荐

Global site tag (gtag.js) - Google Analytics