一、在高德开发平台注册
高德开发平台 二、新建应用,获取key
三、在Android studio中 打开“AndroidManifest.xml” 添加如下代码:
3.1 添加高德 key 在application标签中配置Key:<application
android:icon="@drawable/icon"
android:label="@string/app_name" >
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="请输入您的用户Key"/>
</application>3.2 在AndroidManifest.xml中配置权限:<!-- 用于进行网络定位 -->
<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>3.3 需要定位 在application标签中声明service组件<service android:name="com.amap.api.location.APSService"></service>XML文件就设置结束了四、下载开发包
SDK 相关下载 五、将 jar包添加到 lib 文件夹中 手动导入

六、将so文件导入jniLIbs文件夹中 (新建这个 文件夹)

七、在layout 布局文件中 添加地图容器
在使用2d地图时控件为:
<com.amap.api.maps2d.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.amap.api.maps2d.MapView>在使用3d地图时控件为:
<com.amap.api.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.amap.api.maps.MapView>将2d取消即可
八、MainActivity编程 显示地图
MapView mMapView = null;//地图容器
AMap aMap;//地图对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
```//mMapView地图容器 aMap地图对象
mMapView = findViewById(R.id.map);
mMapView.onCreate(savedInstanceState);
aMap = mMapView.getMap();
}
//这时已经可以显示地图了九、添加定位
aMap.setMyLocationEnabled(true);//显示定位层并且可以触发定位
aMap.moveCamera(CameraUpdateFactory.zoomTo(17));//显示地图缩放比例
```java
为Activity添加接口
public class MainActivity extends AppCompatActivity implements AMapLocationListener,LocationSource {
这时程序会提醒添加方法
添加三个方法
1、
@Override
public void activate(OnLocationChangedListener onLocationChangedListener) {
initLocation();
}
```public void initLocation() {
//aMapLocationClient定位客户端 aMapLocationClientOption客户端定位模式
aMapLocationClientOption = new AMapLocationClientOption();//初始化定位参数
aMapLocationClientOption.setLocationMode(AMapLocationMode.Battery_Saving);//定位模式高精度
aMapLocationClientOption.setSensorEnable(true);
aMapLocationClientOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.Sport);
aMapLocationClient = new AMapLocationClient(this);
aMapLocationClient.setLocationListener(this);//设置定位监听
aMapLocationClient.setLocationOption(aMapLocationClientOption); //设置定位参数
aMapLocationClient.startLocation();//启动定位
}
2、
@Override
public void deactivate() {
aMapLocationClient=null;
mListener = null;
}
3、
@Override
public void onLocationChanged(AMapLocation aMapLocation) {
if (aMapLocation != null) {
if (aMapLocation.getErrorCode() == 0) {
mListener.onLocationChanged(aMapLocation);
//定位成功回调信息,设置相关消息
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,则没有此结果
aMapLocation.getCountry();//国家信息
aMapLocation.getProvince();//省信息
aMapLocation.getCity();//城市信息
aMapLocation.getDistrict();//城区信息
aMapLocation.getRoad();//街道信息
aMapLocation.getCityCode();//城市编码
aMapLocation.getAdCode();//地区编码
Toast.makeText(MainActivity.this, " 位置更新! ", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(MainActivity.this, " error ", Toast.LENGTH_LONG).show();
}
}
```这时 还需要从lib里导入一些包,程序就能定位了
第一次尝试
















