本文主要是介绍高德地图LBS开发定位--android客户端,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
*
高德地图LBS开发定位–android客户端(一)
*
这个几乎是所有开放平台都通用的做法,无外乎注册帐号,成为开发者,然后创建一个Android应用,会为你分配一个key绑定你的服务。注册网址
环境配置。
<1>添加so文件,在src/main/目录下新建jniLibs目录,并将文件放入其中。
<2>添加jar包,将jar包放入libs目录下。对于每个jar文件,右键-选择Add As Library,导入到工程中。或者使用菜单栏 选择 File ->Project Structure->Modules-> Dependencies。点击绿色的加号选择File dependency. 然后选择要添加的jar包即可。
配置AndroidMainfest.xml文件。
<!-- 申请必要的权限-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><application
android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"><!--设置key--><meta-data
android:name="com.amap.api.v2.apikey"android:value="这里填写第一步你申请的那个key" /><!--声明定位service--><service android:name="com.amap.api.location.APSService"></service>
</application>
4.Activity的布局文件。
<com.amap.api.maps2d.MapViewxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/map"android:layout_width="fill_parent"android:layout_height="fill_parent" />
5.Activity代码.
public class AMapActivity extends Activity implements LocationSource,AMapLocationListener{//显示地图需要的变量private MapView mMapView = null;//地图控件private AMap aMap;//地图对象//定位需要的声明private AMapLocationClient mLocationClient = null;//定位发起端private AMapLocationClientOption mLocationOption = null;//定位参数private LocationSource.OnLocationChangedListener mListener = null;//定位监听器//标识,用于判断是否只显示一次定位信息和用户重新定位private boolean isFirstLoc = true;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_amap);//获取地图控件引用mMapView = (MapView) findViewById(R.id.map);//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),实现地图生命周期管理mMapView.onCreate(savedInstanceState);//获取地图对象aMap= mMapView.getMap();//设置显示定位按钮 并且可以点击UiSettings uiSettings = aMap.getUiSettings();//设置定位监听aMap.setLocationSource(this);//显示地图定位按钮uiSettings.setMyLocationButtonEnabled(true);// 是否可触发定位并显示定位层aMap.setMyLocationEnabled(true);initLocation();}private void initLocation() {//初始化定位mLocationClient = new AMapLocationClient(getApplicationContext());//设置定位回调监听mLocationClient.setLocationListener(this);//初始化定位参数mLocationOption = new AMapLocationClientOption();//设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//设置是否返回地址信息(默认返回地址信息)mLocationOption.setNeedAddress(true);//设置是否只定位一次,默认为falsemLocationOption.setOnceLocation(false);//设置是否强制刷新WIFI,默认为强制刷新mLocationOption.setWifiActiveScan(true);//设置是否允许模拟位置,默认为false,不允许模拟位置mLocationOption.setMockEnable(false);//设置定位间隔,单位毫秒,默认为2000msmLocationOption.setInterval(2000);//给定位客户端对象设置定位参数mLocationClient.setLocationOption(mLocationOption);//启动定位mLocationClient.startLocation();}/*** 激活定位* @param onLocationChangedListener*/@Overridepublic void activate(OnLocationChangedListener onLocationChangedListener) {mListener = onLocationChangedListener;}/*** 停止定位*/@Overridepublic void deactivate() {mListener = null;}/*** 定位回掉函数* @param amapLocation*/@Overridepublic void onLocationChanged(AMapLocation amapLocation) {if (amapLocation != null) {if (amapLocation.getErrorCode() == 0) {//定位成功回调信息,设置相关消息amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表amapLocation.getLatitude();//获取纬度amapLocation.getLongitude();//获取经度amapLocation.getAccuracy();//获取精度信息SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = new Date(amapLocation.getTime());df.format(date);//定位时间amapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。amapLocation.getCountry();//国家信息amapLocation.getProvince();//省信息amapLocation.getCity();//城市信息amapLocation.getDistrict();//城区信息amapLocation.getStreet();//街道信息amapLocation.getStreetNum();//街道门牌号信息amapLocation.getCityCode();//城市编码amapLocation.getAdCode();//地区编码//如果不设置标志位,此时再拖动地图时,它会不断将地图移动到当前的位置if (isFirstLoc){//设置缩放级别aMap.moveCamera(CameraUpdateFactory.zoomTo(17));LatLng latLng = new LatLng(amapLocation.getLatitude(),amapLocation.getLongitude());//将地图移到定位点aMap.moveCamera(CameraUpdateFactory.changeLatLng(latLng));//点击定位按钮,能将地图的中心移动定位点mListener.onLocationChanged(amapLocation);//获取定位信息StringBuffer buffer = new StringBuffer();buffer.append(amapLocation.getCountry()+"|"+amapLocation.getProvince()+"|"+amapLocation.getCity()+"|"+amapLocation.getDistrict()+"|"+amapLocation.getStreet());Toast.makeText(getApplicationContext(),buffer.toString(),Toast.LENGTH_SHORT).show();isFirstLoc = false;}} else {//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。Log.e("AmapError","location Error, ErrCode:"+ amapLocation.getErrorCode() + ", errInfo:"+ amapLocation.getErrorInfo());Toast.makeText(getApplicationContext(), "定位失败", Toast.LENGTH_LONG).show();}}}@Overrideprotected void onResume() {super.onResume();//在activity执行onResume时执行mMapView.onResume (),实现地图生命周期管理mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView.onPause (),实现地图生命周期管理mMapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),实现地图生命周期管理mMapView.onSaveInstanceState(outState);}
}
6.运行结果。
这篇关于高德地图LBS开发定位--android客户端的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!