MainActivity
package com.example.gaodeditu; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationClientOption; import com.amap.api.location.AMapLocationListener; import com.amap.api.maps2d.AMap; import com.amap.api.maps2d.MapView; public class MainActivity extends AppCompatActivity { public AMapLocationClient mapLocationClient = null; private AMapLocationClientOption aMapLocationClientOption; private MapView mMapView; private AMap aMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取到地图控件 mMapView = (MapView) findViewById(R.id.map); //创建地图 mMapView.onCreate(savedInstanceState); //显示地图 if(aMap == null){ //得到地图 aMap = mMapView.getMap(); } //初始化定位 mapLocationClient = new AMapLocationClient(this); //初始化一个定位选项对象 aMapLocationClientOption = new AMapLocationClientOption(); //设置定位模式 aMapLocationClientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving); //设立单词定位 aMapLocationClientOption.setOnceLocation(true); //连续定位法 1000 歌100mills 定位一次 aMapLocationClientOption.setInterval(1000); //设置是否返回定位地址信息 aMapLocationClientOption.setNeedAddress(true); mapLocationClient.setLocationListener(new AMapLocationListener() { @Override public void onLocationChanged(AMapLocation aMapLocation) { if (aMapLocation != null) { //等于0 定位成功 有信息 if (aMapLocation.getErrorCode() == 0) { //解析定位结果 //得到国家 String country = aMapLocation.getCountry(); //得到省 String province = aMapLocation.getProvince(); //城市 String city = aMapLocation.getCity(); System.out.println("国家 : "+country+" 省/市 : "+province+" 市 : "+city); } } } }); } /** * 开启定位方法 */ public void location() { //设定相关的定位信息 mapLocationClient.setLocationOption(aMapLocationClientOption); //开启定位 mapLocationClient.startLocation(); } public void btnStartLoCation(View view){ location(); } //生命周期 @Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制 mMapView.onPause(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态 mMapView.onSaveInstanceState(outState); } }
activity
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.gaodeditu.MainActivity"> <Button android:onClick="btnStartLoCation" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="开始定位"/> <com.amap.api.maps2d.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent"> </com.amap.api.maps2d.MapView> </LinearLayout>
//配置文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bwie.gaodemapdemo">
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<!--用于申请获取蓝牙信息进行室内定位-->
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>
//地图SDK(包含其搜索功能)需要的基础权限
<!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data android:name="com.amap.api.v2.apikey" android:value="88f64ea8f31020b436a615ea193527ec">
</meta-data>
<!-- 定位需要的服务 -->
<service android:name="com.amap.api.location.APSService" >
</service>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
//要导入两个重要的包 ,是要自己去高德地图接口api接口里面去注册个key值然后根据要求一步一步往下去做
github地址
https://github.com/hongliang312/MyShareDemo/tree/master/gaodemap