高德地图

这篇博客展示了如何在Android应用中使用高德地图API实现基础地图、定位和导航功能。主要通过MainActivity和NaviActivity两个类来演示,包括按钮点击事件触发不同页面的跳转,如基础地图、定位和导航页面。NaviActivity中实现了AMapNaviListener和AMapNaviViewListener,用于处理路径规划、导航和模拟导航的各种回调。
摘要由CSDN通过智能技术生成

MainActivity

package com.example.gaodedemo;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;


public class MainActivity extends Activity implements View.OnClickListener {


    /**
     * 基础地图
     */
    private Button mBt1;
    /**
     * 定位
     */
    private Button mBt2;
    /**
     * 导航
     */
    private Button mBt3;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();




    }




    private void initView() {
        mBt1 = (Button) findViewById(R.id.bt1);
        mBt1.setOnClickListener(this);
        mBt2 = (Button) findViewById(R.id.bt2);
        mBt2.setOnClickListener(this);
        mBt3 = (Button) findViewById(R.id.bt3);
        mBt3.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.bt1:
                //跳转到基础地图
                Intent intent1 = new Intent(MainActivity.this, BasicMapActivity.class);
                startActivity(intent1);
                break;
            case R.id.bt2:
                //跳转到定位页面
                Intent intent2 = new Intent(MainActivity.this, LocationActivity.class);
                startActivity(intent2);
                break;
            case R.id.bt3:
                //跳转到导航页面
                Intent intent3 = new Intent(MainActivity.this,NaviActivity.class);
                startActivity(intent3);
                break;
        }
    }

}

--------------------------------------------------------------------------------------------------------------------------

NaviActivity

package com.example.gaodedemo;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;


import com.amap.api.navi.AMapNavi;
import com.amap.api.navi.AMapNaviListener;
import com.amap.api.navi.AMapNaviView;
import com.amap.api.navi.AMapNaviViewListener;
import com.amap.api.navi.enums.NaviType;
import com.amap.api.navi.model.AMapLaneInfo;
import com.amap.api.navi.model.AMapModelCross;
import com.amap.api.navi.model.AMapNaviCameraInfo;
import com.amap.api.navi.model.AMapNaviCross;
import com.amap.api.navi.model.AMapNaviInfo;
import com.amap.api.navi.model.AMapNaviLocation;
import com.amap.api.navi.model.AMapNaviTrafficFacilityInfo;
import com.amap.api.navi.model.AMapServiceAreaInfo;
import com.amap.api.navi.model.AimLessModeCongestionInfo;
import com.amap.api.navi.model.AimLessModeStat;
import com.amap.api.navi.model.NaviInfo;
import com.amap.api.navi.model.NaviLatLng;
import com.autonavi.tbt.TrafficFacilityInfo;
import com.example.gaodedemo.util.TTSController;


import java.util.ArrayList;
import java.util.List;


public class NaviActivity extends AppCompatActivity implements AMapNaviListener, AMapNaviViewListener {


    private AMapNavi mAMapNavi;
    private final List<NaviLatLng> sList = new ArrayList<NaviLatLng>();
    private final List<NaviLatLng> eList = new ArrayList<NaviLatLng>();
    private AMapNaviView mAMapNaviView;
    protected TTSController mTtsManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_navi);
        mAMapNaviView = (AMapNaviView) findViewById(R.id.navi_view);
        mAMapNaviView.onCreate(savedInstanceState);
        mAMapNaviView.setAMapNaviViewListener(this);


        //获取AMapNavi实例
        mAMapNavi = AMapNavi.getInstance(getApplicationContext());
        //添加监听回调,用于处理算路成功
        mAMapNavi.addAMapNaviListener(this);
        //添加导航声音
        mAMapNavi.addAMapNaviListener(mTtsManager);
        mAMapNavi.setUseInnerVoice(true);


        //设置模拟导航的行车速度
        mAMapNavi.setEmulatorNaviSpeed(75);
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        mAMapNavi.stopNavi();
        mAMapNavi.destroy();
    }


    @Override
    public void onInitNaviFailure() {


    }


    //当 AMapNavi 对象初始化成功后,会进入 onInitNaviSuccess 回调函数,在该回调函数中调用路径规划方法计算路径。
    @Override
    public void onInitNaviSuccess() {
        int strategy=0;
        try {
            strategy = mAMapNavi.strategyConvert(true, false, false, false, false);
        } catch (Exception e) {
            e.printStackTrace();
        }


        sList.clear();
        eList.clear();
        NaviLatLng mStartLatlng = new NaviLatLng(39.894914, 116.322062);
        NaviLatLng mEndLatlng = new NaviLatLng(39.903785, 116.423285);


        sList.add(mStartLatlng);
        eList.add(mEndLatlng);


        mAMapNavi.calculateDriveRoute(sList, eList, null, strategy);
    }


    @Override
    public void onStartNavi(int i) {


    }


    @Override
    public void onTrafficStatusUpdate() {


    }


    @Override
    public void onLocationChange(AMapNaviLocation aMapNaviLocation) {


    }


    @Override
    public void onGetNavigationText(int i, String s) {


    }


    @Override
    public void onGetNavigationText(String s) {


    }


    @Override
    public void onEndEmulatorNavi() {


    }


    @Override
    public void onArriveDestination() {


    }


    @Override
    public void onCalculateRouteFailure(int i) {


    }


    @Override
    public void onReCalculateRouteForYaw() {


    }


    @Override
    public void onReCalculateRouteForTrafficJam() {


    }


    @Override
    public void onArrivedWayPoint(int i) {


    }


    @Override
    public void onGpsOpenStatus(boolean b) {


    }


    @Override
    public void onNaviInfoUpdate(NaviInfo naviInfo) {


    }


    @Override
    public void onNaviInfoUpdated(AMapNaviInfo aMapNaviInfo) {


    }


    @Override
    public void updateCameraInfo(AMapNaviCameraInfo[] aMapNaviCameraInfos) {


    }


    @Override
    public void updateIntervalCameraInfo(AMapNaviCameraInfo aMapNaviCameraInfo, AMapNaviCameraInfo
            aMapNaviCameraInfo1, int i) {


    }


    @Override
    public void onServiceAreaUpdate(AMapServiceAreaInfo[] aMapServiceAreaInfos) {


    }


    @Override
    public void showCross(AMapNaviCross aMapNaviCross) {


    }


    @Override
    public void hideCross() {


    }


    @Override
    public void showModeCross(AMapModelCross aMapModelCross) {


    }


    @Override
    public void hideModeCross() {


    }


    @Override
    public void showLaneInfo(AMapLaneInfo[] aMapLaneInfos, byte[] bytes, byte[] bytes1) {


    }


    @Override
    public void showLaneInfo(AMapLaneInfo aMapLaneInfo) {


    }


    @Override
    public void hideLaneInfo() {


    }


    @Override
    public void onCalculateRouteSuccess(int[] ints) {
        //开始导航
        mAMapNavi.startNavi(NaviType.EMULATOR);
    }


    @Override
    public void notifyParallelRoad(int i) {


    }


    @Override
    public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo aMapNaviTrafficFacilityInfo) {


    }


    @Override
    public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos) {


    }


    @Override
    public void OnUpdateTrafficFacility(TrafficFacilityInfo trafficFacilityInfo) {


    }


    @Override
    public void updateAimlessModeStatistics(AimLessModeStat aimLessModeStat) {


    }


    @Override
    public void updateAimlessModeCongestionInfo(AimLessModeCongestionInfo aimLessModeCongestionInfo) {


    }


    @Override
    public void onPlayRing(int i) {


    }


    @Override
    public void onNaviSetting() {


    }


    @Override
    public void onNaviCancel() {


    }


    @Override
    public boolean onNaviBackClick() {
        return false;
    }


    @Override
    public void onNaviMapMode(int i) {


    }


    @Override
    public void onNaviTurnClick() {


    }


    @Override
    public void onNextRoadClick() {


    }


    @Override
    public void onScanViewButtonClick() {


    }


    @Override
    public void onLockMap(boolean b) {


    }


    @Override
    public void onNaviViewLoaded() {


    }

}

----------------------------------------------------------------------------------------------------------------------------

LocationActivity

package com.example.gaodedemo;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;


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.CameraUpdateFactory;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MarkerOptions;


import java.text.SimpleDateFormat;
import java.util.Date;


public class LocationActivity extends AppCompatActivity implements AMapLocationListener {
    //声明aMapLocationClient类对象
    public AMapLocationClient mLocationClient = null;
    //声明AMapLocationClientOption对象
    public AMapLocationClientOption mLocationOption = null;
    private MapView mMapView = null;
    private AMap aMap;
    private Marker locationMarker;
    private LatLng latLng;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_location);
        //初始化组件
        ImageView iv = findViewById(R.id.iv);
        iv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (latLng != null) {
                    aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));
                }
            }
        });
        //获取地图控件引用
        mMapView = (MapView) findViewById(R.id.map);
        //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
        mMapView.onCreate(savedInstanceState);


        //初始化地图控制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值