您的位置:首页 > 其它

高德地图的基本使用

2015-11-29 12:08 351 查看
<!-- 引入布局文件 -->

<com.amap.api.maps.MapView

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/map"

android:layout_width="match_parent"

android:layout_height="match_parent" />

权限:

<!-- 地图包、搜索包需要的基础权限 -->

<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" />

Key

<meta-data

android:name="com.amap.api.v2.apikey"

android:value="b5507560873396e0302f5413f7858895" />

代码:

package com.example.map_demo01;

import android.app.Activity;

import android.location.Location;

import android.os.Bundle;

import com.amap.api.location.AMapLocation;

import com.amap.api.location.AMapLocationListener;

import com.amap.api.location.LocationManagerProxy;

import com.amap.api.location.LocationProviderProxy;

import com.amap.api.maps.AMap;

import com.amap.api.maps.LocationSource;

import com.amap.api.maps.MapView;

public class MainActivity extends Activity implements LocationSource

,AMapLocationListener {

// 声明变量

private MapView mapView;

private AMap aMap;

private OnLocationChangedListener mListener;

private LocationManagerProxy mAMapLocationManager;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

/**

* AMapV2地图中介绍如何使用mapview显示地图

*/

// 在onCreat方法中给aMap对象赋值

mapView = (MapView) findViewById(R.id.map);

mapView.onCreate(savedInstanceState);// 必须要写

// aMap = mapView.getMap();

init();

}

/**

* 初始化AMap对象

*/

private void init() {

if (aMap == null) {

aMap = mapView.getMap();

setUpMap();

}

}

private void setUpMap() {

aMap.setLocationSource(this);// 设置定位监听

aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示

aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false

// 设置定位的类型为定位模式:定位(AMap.LOCATION_TYPE_LOCATE)、跟随(AMap.LOCATION_TYPE_MAP_FOLLOW)

// 地图根据面向方向旋转(AMap.LOCATION_TYPE_MAP_ROTATE)三种模式

aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);

}

@Override

protected void onResume() {

super.onResume();

mapView.onResume();

}

@Override

protected void onPause() {

super.onPause();

mapView.onPause();

deactivate();

}

@Override

protected void onDestroy() {

super.onDestroy();

mapView.onDestroy();

}

/**

* 定位成功后回调函数

*/

@Override

public void onLocationChanged(AMapLocation amapLocation) {

if (mListener != null && amapLocation != null) {

if (amapLocation.getAMapException().getErrorCode() == 0) {

mListener.onLocationChanged(amapLocation);// 显示系统小蓝点

}

}

}

/**

* 激活定位

*/

@Override

public void activate(OnLocationChangedListener listener) {

mListener = listener;

if (mAMapLocationManager == null) {

mAMapLocationManager = LocationManagerProxy.getInstance(this);

//此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,

//注意设置合适的定位时间的间隔,并且在合适时间调用removeUpdates()方法来取消定位请求

//在定位结束后,在合适的生命周期调用destroy()方法

//其中如果间隔时间为-1,则定位只定一次

mAMapLocationManager.requestLocationData(

LocationProviderProxy.AMapNetwork, 60*1000, 10, this);

}

}

/**

* 停止定位

*/

@Override

public void deactivate() {

mListener = null;

if (mAMapLocationManager != null) {

mAMapLocationManager.removeUpdates(this);

mAMapLocationManager.destroy();

}

mAMapLocationManager = null;

}

@Override

public void onLocationChanged(Location location) {

// TODO Auto-generated method stub

}

@Override

public void onProviderDisabled(String provider) {

// TODO Auto-generated method stub

}

@Override

public void onProviderEnabled(String provider) {

// TODO Auto-generated method stub

}

@Override

public void onStatusChanged(String provider, int status, Bundle extras) {

// TODO Auto-generated method stub

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: