android开发高德定位,Android 高德地圖——地圖定位

package com.ditu.kaiwei.gaode2;

import android.content.Intent;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.util.Log;

import android.view.View;

import android.widget.Button;

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.maps.AMap;

import com.amap.api.maps.LocationSource;

import com.amap.api.maps.MapView;

import com.amap.api.maps.model.MyLocationStyle;

public class Gaode extends AppCompatActivity implements LocationSource, AMapLocationListener {

MapView mMapView = null;

AMap aMap;

MyLocationStyle myLocationStyle;

OnLocationChangedListener mListener;

AMapLocationClient mlocationClient;

AMapLocationClientOption mLocationOption;

Button daohang;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_gaode);

//獲取地圖控件引用

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

//在activity執行onCreate時執行mMapView.onCreate(savedInstanceState),創建地圖

mMapView.onCreate(savedInstanceState);

//初始化地圖控制器對象

aMap = mMapView.getMap();

myLocationStyle = new MyLocationStyle();//初始化定位藍點樣式類

aMap.setMyLocationStyle(myLocationStyle);//設置定位藍點的Style

aMap.getUiSettings().setMyLocationButtonEnabled(true);//設置默認定位按鈕是否顯示,非必需設置。

// 設置定位監聽

aMap.setLocationSource(this);

// 設置為true表示顯示定位層並可觸發定位,false表示隱藏定位層並不可觸發定位,默認是false

aMap.setMyLocationEnabled(true);

// 設置定位的類型為定位模式,有定位、跟隨或地圖根據面向方向旋轉幾種

aMap.setMyLocationType(AMap.LOCATION_TYPE_MAP_FOLLOW);

daohang = (Button)findViewById(R.id.button2);

daohang.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Intent intent = new Intent(); //就是他

intent.setClass(Gaode.this,daohangA.class); //第一個是當前的上下文信息,第二個是我們要跳轉的類

startActivity(intent); //開始就是調用一個新的Activity

Gaode.this.finish(); //完成就是關閉啊

}

});

}

@Override

protected void onDestroy() {

super.onDestroy();

//在activity執行onDestroy時執行mMapView.onDestroy(),銷毀地圖

mMapView.onDestroy();

if(null != mlocationClient){

mlocationClient.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);

}

@Override

public void activate(OnLocationChangedListener listener) {

mListener = listener;

if (mlocationClient == null) {

//初始化定位

mlocationClient = new AMapLocationClient(this);

//初始化定位參數

mLocationOption = new AMapLocationClientOption();

//設置定位回調監聽

mlocationClient.setLocationListener(this);

//設置為高精度定位模式

mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);

//設置定位參數

mlocationClient.setLocationOption(mLocationOption);

// 此方法為每隔固定時間會發起一次定位請求,為了減少電量消耗或網絡流量消耗,

// 注意設置合適的定位時間的間隔(最小間隔支持為2000ms),並且在合適時間調用stopLocation()方法來取消定位請求

// 在定位結束后,在合適的生命周期調用onDestroy()方法

// 在單次定位情況下,定位無論成功與否,都無需調用stopLocation()方法移除請求,定位sdk內部會移除

mlocationClient.startLocation();//啟動定位

}

}

@Override

public void deactivate() {

mListener = null;

if (mlocationClient != null) {

mlocationClient.stopLocation();

mlocationClient.onDestroy();

}

mlocationClient = null;

}

@Override

public void onLocationChanged(AMapLocation amapLocation) {

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

if (amapLocation != null

&&amapLocation.getErrorCode() == 0) {

mListener.onLocationChanged(amapLocation);// 顯示系統小藍點

} else {

String errText = "定位失敗," + amapLocation.getErrorCode()+ ": " + amapLocation.getErrorInfo();

Log.e("AmapErr",errText);

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值