模拟导航 android,Android 高德地图——地图模拟导航

本文介绍了一个基于高德地图SDK实现的Android应用案例,该应用实现了定位与导航功能。文章详细展示了如何集成高德地图服务,包括初始化地图、设置定位参数、实现定位监听等步骤,并通过按钮触发导航至新页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值