Android 之路51---百度地图实现

导读

1.简介
2.获取SHA1码的方式
3.配置环境
4.地图初养成
5.显示地图覆盖物
6.窗口信息的添加及发起截图
7.POI检索
8.线路规划
9.定位
10.导航
11.全景图

简介

这里写图片描述

使用流程
这里写图片描述

注册登录
这里写图片描述

这里写图片描述

点击上图获取密钥

这里写图片描述

点击上图创建应用

这里写图片描述
⚠️这里要选择android SDK
下载SDK,事例代码,类参考
这里写图片描述

这里写图片描述

获取SHA1码的方式

这里写图片描述

扫描二维码关注公众号,回复: 1075045 查看本文章

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

获取开发版

这里写图片描述

这里写图片描述

获取发布版

在finish后,从存储的路径找到生成的文件,然后拷贝到下图

这里写图片描述

在Terminal中复制输入如下命令(是一句哦)

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android 

然后得到发布码

填写完毕后会创建应用如下图

这里写图片描述

配置环境

上一步完成后,我们还需要配置环境,需要用到上边下载的文件

⚠️以下内容要去百度地图官网查看最新情况

这里写图片描述

首先,将下载的文件解压,我们要用到的是下图文件

Docs文件夹 —-百度地图的类库及接口
Lib文件夹—-开发要导入工程的配置文件
Sample文件夹—-百度官方的开发案例

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

⚠️图中标号对应的拷到对应的位置,在工程视图下操作较容易

然后添加依赖⚠️要到百度地图官网上查最新的代码

这里写图片描述
这里写图片描述

sourceSets{
            main{
                jniLibs.srcDir 'libs'
                //说明so的路径为该libs路径,关联所有地图SDK的so文件
            }
        }
compile files('libs/BaiduLBS_Android.jar')

这里写图片描述

 signingConfigs{
        release{
            storeFile file("/Users/air/Documents/Android/app/Android.jks")
            storePassword "********"
            keyAlias "key0"
            keyPassword "******"
        }
    }
buildTypes {
        release {
            //是否混淆
            minifyEnabled false
            //是否移除无用资源
            zipAlignEnabled true
            //混淆的配置文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
}

⚠️这里有个安全问题
这里写图片描述
这里写图片描述

再然后在清单文件中添加权限⚠️在百度地图官网上查询

这里写图片描述

⚠️上图的开发者key来自下图
这里写图片描述

这里写图片描述

地图初养成

见上图了,官方给的使用方法,不过开发中经常要写我们自己的application

这里写图片描述

这里写图片描述

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.hala.mapdemo">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:name=".HalaApplication">

        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="自己创建的百度地图项目下面有" />

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    //获取设备网络状态,禁用后无法获取网络状态
    <uses-permission android:name="android.permission.INTERNET"/>
    //网络权限,当禁用后,无法进行检索等相关业务
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    //读取设备硬件信息,统计数据
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    //读取系统信息,包含系统版本等信息,用作统计
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    //获取设备的网络状态,鉴权所需网络代理
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    //允许sd卡写权限,需写入地图数据,禁用后无法显示地图
    <uses-permission android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />
    //获取统计数据
    <uses-permission android:name="android.permission.GET_TASKS" />
    //鉴权所需该权限获取进程列表
    <uses-permission android:name="android.permission.CAMERA" />
    //使用步行AR导航,配置Camera权限

</manifest>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true" />

</android.support.constraint.ConstraintLayout>

HalaApplication.java

package com.hala.mapdemo;

import android.app.Application;

import com.baidu.mapapi.SDKInitializer;

//别忘了在清单文件中注册自定义application
public class HalaApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //初始化地图
        SDKInitializer.initialize(getApplicationContext());
    }
}

MainActivity.java

package com.hala.mapdemo;

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

import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapView;



public class MainActivity extends AppCompatActivity {


    MapView mMapView=null;//展示地图视图
    BaiduMap mBaiduMap;//控制器

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

        mMapView=(MapView)this.findViewById(R.id.bmapView);
        mBaiduMap=mMapView.getMap();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.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();
    }
}

显示地图覆盖物

⚠️其他文件相同

MainActivity.java

package com.hala.mapdemo;

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

import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.PolygonOptions;
import com.baidu.mapapi.map.TextOptions;
import com.baidu.mapapi.model.LatLng;

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


public class MainActivity extends AppCompatActivity {


    MapView mMapView=null;//展示地图视图
    BaiduMap mBaiduMap;//控制器

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

        mMapView=(MapView)this.findViewById(R.id.bmapView);
        mBaiduMap=mMapView.getMap();
        //设置地图的类型
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
        addText();
//        addPoly();
//        addMarker();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.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();
    }

    /**
     *添加文字覆盖物
     */
    public void addText(){
        TextOptions opt=new TextOptions();
        opt.text("Emilia Clark");
        opt.fontColor(Color.BLACK);
        opt.fontSize(24);
        LatLng point=new LatLng(39,116);
        opt.position(point);
        //添加覆盖物
        mBaiduMap.addOverlay(opt);
    }

    /**
     * 添加多边形覆盖物
     */
    public void addPoly(){
        PolygonOptions poly=new PolygonOptions();
        List<LatLng> lats=new ArrayList<LatLng>();
        LatLng point1=new LatLng(39,116);
        lats.add(point1);
        LatLng point2=new LatLng(38,116);
        lats.add(point2);
        LatLng point3=new LatLng(39,117);
        lats.add(point3);

        poly.points(lats);
        mBaiduMap.addOverlay(poly);
    }

    /**
     * 添加图片标志物
     */
    public void addMarker(){
        MarkerOptions opt=new MarkerOptions();
        BitmapDescriptor icon= BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
        opt.icon(icon);
        LatLng point=new LatLng(39,116);
        opt.position(point);
        mBaiduMap.addOverlay(opt);
    }
}

窗口信息的添加及发起截图

⚠️其他文件保持不变

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="截图"
        android:onClick="onClick"/>

    <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        app:layout_constraintTop_toBottomOf="@+id/btn_icon" />

</android.support.constraint.ConstraintLayout>

MainActivity.java

package com.hala.mapdemo;

import android.graphics.Bitmap;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.InfoWindow;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.PolygonOptions;
import com.baidu.mapapi.map.TextOptions;
import com.baidu.mapapi.model.LatLng;

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


public class MainActivity extends AppCompatActivity {


    MapView mMapView=null;//展示地图视图
    BaiduMap mBaiduMap;//控制器

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

        mMapView=(MapView)this.findViewById(R.id.bmapView);
        mBaiduMap=mMapView.getMap();
        //设置地图的类型
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
        addText();
//        addPoly();
//        addMarker();
//        addInfo();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.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();
    }

    /**
     *添加文字覆盖物
     */
    public void addText(){
        TextOptions opt=new TextOptions();
        opt.text("Emilia Clark");
        opt.fontColor(Color.BLACK);
        opt.fontSize(24);
        LatLng point=new LatLng(39,116);
        opt.position(point);
        //添加覆盖物
        mBaiduMap.addOverlay(opt);
    }

    /**
     * 添加多边形覆盖物
     */
    public void addPoly(){
        PolygonOptions poly=new PolygonOptions();
        List<LatLng> lats=new ArrayList<LatLng>();
        LatLng point1=new LatLng(39,116);
        lats.add(point1);
        LatLng point2=new LatLng(38,116);
        lats.add(point2);
        LatLng point3=new LatLng(39,117);
        lats.add(point3);

        poly.points(lats);
        mBaiduMap.addOverlay(poly);
    }

    /**
     * 添加图片标志物
     */
    public void addMarker(){
        MarkerOptions opt=new MarkerOptions();
        BitmapDescriptor icon= BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
        opt.icon(icon);
        LatLng point=new LatLng(39,116);
        opt.position(point);
        mBaiduMap.addOverlay(opt);
    }

    /**
     * 添加窗口视图
     */
    public void addInfo(){
        BitmapDescriptor icon=BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
        LatLng point=new LatLng(39,116);

        InfoWindow info=new InfoWindow(icon,point,0,new InfoWindowOnClickListener());
        mBaiduMap.showInfoWindow(info);
    }

    //窗口视图的监听器,InfoWindow的第四个参数
    class InfoWindowOnClickListener implements InfoWindow.OnInfoWindowClickListener{

        @Override
        public void onInfoWindowClick() {
            Toast.makeText(MainActivity.this, "窗口信息被点击了", Toast.LENGTH_SHORT).show();
        }
    }

    //截图点击事件
    public void onClick(View view){
        mBaiduMap.snapshot(new BaiduMap.SnapshotReadyCallback() {
            @Override
            public void onSnapshotReady(Bitmap bitmap) {
                Toast.makeText(MainActivity.this, "地址:"+bitmap, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

POI检索

这里写图片描述

⚠️其他文件不变

MainActivity.java

package com.hala.mapdemo;

import android.graphics.Bitmap;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.InfoWindow;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.PolygonOptions;
import com.baidu.mapapi.map.TextOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.utils.poi.BaiduMapPoiSearch;
import com.baidu.mapapi.utils.poi.PoiParaOption;

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


public class MainActivity extends AppCompatActivity {


    MapView mMapView=null;//展示地图视图
    BaiduMap mBaiduMap;//控制器

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

        mMapView=(MapView)this.findViewById(R.id.bmapView);
        mBaiduMap=mMapView.getMap();
        //设置地图的类型
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
        addText();
//        addPoly();
//        addMarker();
//        addInfo();
//        poiSearch();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.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();
    }

    /**
     *添加文字覆盖物
     */
    public void addText(){
        TextOptions opt=new TextOptions();
        opt.text("Emilia Clark");
        opt.fontColor(Color.BLACK);
        opt.fontSize(24);
        LatLng point=new LatLng(39,116);
        opt.position(point);
        //添加覆盖物
        mBaiduMap.addOverlay(opt);
    }

    /**
     * 添加多边形覆盖物
     */
    public void addPoly(){
        PolygonOptions poly=new PolygonOptions();
        List<LatLng> lats=new ArrayList<LatLng>();
        LatLng point1=new LatLng(39,116);
        lats.add(point1);
        LatLng point2=new LatLng(38,116);
        lats.add(point2);
        LatLng point3=new LatLng(39,117);
        lats.add(point3);

        poly.points(lats);
        mBaiduMap.addOverlay(poly);
    }

    /**
     * 添加图片标志物
     */
    public void addMarker(){
        MarkerOptions opt=new MarkerOptions();
        BitmapDescriptor icon= BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
        opt.icon(icon);
        LatLng point=new LatLng(39,116);
        opt.position(point);
        mBaiduMap.addOverlay(opt);
    }

    /**
     * 添加窗口视图
     */
    public void addInfo(){
        BitmapDescriptor icon=BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
        LatLng point=new LatLng(39,116);

        InfoWindow info=new InfoWindow(icon,point,0,new InfoWindowOnClickListener());
        mBaiduMap.showInfoWindow(info);
    }

    //窗口视图的监听器,InfoWindow的第四个参数
    class InfoWindowOnClickListener implements InfoWindow.OnInfoWindowClickListener{

        @Override
        public void onInfoWindowClick() {
            Toast.makeText(MainActivity.this, "窗口信息被点击了", Toast.LENGTH_SHORT).show();
        }
    }

    //截图点击事件
    public void onClick(View view){
        mBaiduMap.snapshot(new BaiduMap.SnapshotReadyCallback() {
            @Override
            public void onSnapshotReady(Bitmap bitmap) {
                Toast.makeText(MainActivity.this, "地址:"+bitmap, Toast.LENGTH_SHORT).show();
            }
        });
    }

    /**
    *POI检索
    */
    public void poiSearch(){
        BaiduMapPoiSearch poi=new BaiduMapPoiSearch();
        PoiParaOption opt=new PoiParaOption();
        opt.key("肯德基");
        opt.radius(5000);
        LatLng point1=new LatLng(39,116);
        opt.center(point1);
        poi.openBaiduMapPoiNearbySearch(opt,this);
    }
}

线路规划

这里写图片描述

⚠️其他文件不变
MainActivity.java

package com.hala.mapdemo;

import android.graphics.Bitmap;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.InfoWindow;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.PolygonOptions;
import com.baidu.mapapi.map.TextOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.utils.poi.BaiduMapPoiSearch;
import com.baidu.mapapi.utils.poi.PoiParaOption;
import com.baidu.mapapi.utils.route.BaiduMapRoutePlan;
import com.baidu.mapapi.utils.route.RouteParaOption;

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


public class MainActivity extends AppCompatActivity {


    MapView mMapView=null;//展示地图视图
    BaiduMap mBaiduMap;//控制器

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

        mMapView=(MapView)this.findViewById(R.id.bmapView);
        mBaiduMap=mMapView.getMap();
        //设置地图的类型
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
        addText();
//        addPoly();
//        addMarker();
//        addInfo();
//        poiSearch();
        rountPlan();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.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();
    }

    /**
     *添加文字覆盖物
     */
    public void addText(){
        TextOptions opt=new TextOptions();
        opt.text("Emilia Clark");
        opt.fontColor(Color.BLACK);
        opt.fontSize(24);
        LatLng point=new LatLng(39,116);
        opt.position(point);
        //添加覆盖物
        mBaiduMap.addOverlay(opt);
    }

    /**
     * 添加多边形覆盖物
     */
    public void addPoly(){
        PolygonOptions poly=new PolygonOptions();
        List<LatLng> lats=new ArrayList<LatLng>();
        LatLng point1=new LatLng(39,116);
        lats.add(point1);
        LatLng point2=new LatLng(38,116);
        lats.add(point2);
        LatLng point3=new LatLng(39,117);
        lats.add(point3);

        poly.points(lats);
        mBaiduMap.addOverlay(poly);
    }

    /**
     * 添加图片标志物
     */
    public void addMarker(){
        MarkerOptions opt=new MarkerOptions();
        BitmapDescriptor icon= BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
        opt.icon(icon);
        LatLng point=new LatLng(39,116);
        opt.position(point);
        mBaiduMap.addOverlay(opt);
    }

    /**
     * 添加窗口视图
     */
    public void addInfo(){
        BitmapDescriptor icon=BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
        LatLng point=new LatLng(39,116);

        InfoWindow info=new InfoWindow(icon,point,0,new InfoWindowOnClickListener());
        mBaiduMap.showInfoWindow(info);
    }

    //窗口视图的监听器,InfoWindow的第四个参数
    class InfoWindowOnClickListener implements InfoWindow.OnInfoWindowClickListener{

        @Override
        public void onInfoWindowClick() {
            Toast.makeText(MainActivity.this, "窗口信息被点击了", Toast.LENGTH_SHORT).show();
        }
    }

    //截图点击事件
    public void onClick(View view){
        mBaiduMap.snapshot(new BaiduMap.SnapshotReadyCallback() {
            @Override
            public void onSnapshotReady(Bitmap bitmap) {
                Toast.makeText(MainActivity.this, "地址:"+bitmap, Toast.LENGTH_SHORT).show();
            }
        });
    }

    /**
     * POI检索
     */
    public void poiSearch(){
        BaiduMapPoiSearch poi=new BaiduMapPoiSearch();
        PoiParaOption opt=new PoiParaOption();
        opt.key("肯德基");
        opt.radius(5000);
        LatLng point1=new LatLng(39,116);
        opt.center(point1);
        poi.openBaiduMapPoiNearbySearch(opt,this);
    }

    /**
     * 公交路线规划
     */
    public void rountPlan(){
        BaiduMapRoutePlan plan=new BaiduMapRoutePlan();
        LatLng start=new LatLng(39.93923,116.357428);
        LatLng end=new LatLng(39.91923,116.327428);

        RouteParaOption opt=new RouteParaOption();
        opt.cityName("北京");
        opt.startPoint(start);
        opt.startName("天安门");
        opt.endPoint(end);
        opt.endName("龙泽");

        plan.openBaiduMapTransitRoute(opt,this);

    }
}

定位

定位需要在前边基础上再次配置关于定位功能的环境

这里写图片描述

这里写图片描述

将上边两图的Service和权限复制到清单文件中

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.hala.mapdemo">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:name=".HalaApplication">

        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="41WOIuD9aoOcGqEElSGCmUWaMyxwVtRC " />

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service android:name="com.baidu.location.f"
            android:enabled="true" android:process=":remote">
        </service>

    </application>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    //获取设备网络状态,禁用后无法获取网络状态
    <uses-permission android:name="android.permission.INTERNET"/>
    //网络权限,当禁用后,无法进行检索等相关业务
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    //读取设备硬件信息,统计数据
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    //读取系统信息,包含系统版本等信息,用作统计
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    //获取设备的网络状态,鉴权所需网络代理
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    //允许sd卡写权限,需写入地图数据,禁用后无法显示地图
    <uses-permission android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />
    //获取统计数据
    <uses-permission android:name="android.permission.GET_TASKS" />
    //鉴权所需该权限获取进程列表
    <uses-permission android:name="android.permission.CAMERA" />
    //使用步行AR导航,配置Camera权限

    <!-- 这个权限用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <!-- 这个权限用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <!-- 用于读取手机当前的状态-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <!-- 访问网络,网络定位需要上网-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- SD卡读取权限,用户写入离线定位数据-->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
        tools:ignore="ProtectedPermissions"></uses-permission>

</manifest>

这里写图片描述

MainActivity.java

package com.hala.mapdemo;

import android.graphics.Bitmap;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.InfoWindow;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.map.PolygonOptions;
import com.baidu.mapapi.map.TextOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.utils.poi.BaiduMapPoiSearch;
import com.baidu.mapapi.utils.poi.PoiParaOption;
import com.baidu.mapapi.utils.route.BaiduMapRoutePlan;
import com.baidu.mapapi.utils.route.RouteParaOption;

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


public class MainActivity extends AppCompatActivity {


    MapView mMapView=null;//展示地图视图
    BaiduMap mBaiduMap;//控制器

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

        mMapView=(MapView)this.findViewById(R.id.bmapView);
        mBaiduMap=mMapView.getMap();
        //设置地图的类型
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
        addText();
//        addPoly();
//        addMarker();
//        addInfo();
//        poiSearch();
//        rountPlan();
        location();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
        mMapView.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 onStop() {
        super.onStop();
        //如果停止,就取消定位
        client.unRegisterLocationListener(myLocationListener);
        client.stop();
    }

    /**
     *添加文字覆盖物
     */
    public void addText(){
        TextOptions opt=new TextOptions();
        opt.text("Emilia Clark");
        opt.fontColor(Color.BLACK);
        opt.fontSize(24);
        LatLng point=new LatLng(39,116);
        opt.position(point);
        //添加覆盖物
        mBaiduMap.addOverlay(opt);
    }

    /**
     * 添加多边形覆盖物
     */
    public void addPoly(){
        PolygonOptions poly=new PolygonOptions();
        List<LatLng> lats=new ArrayList<LatLng>();
        LatLng point1=new LatLng(39,116);
        lats.add(point1);
        LatLng point2=new LatLng(38,116);
        lats.add(point2);
        LatLng point3=new LatLng(39,117);
        lats.add(point3);

        poly.points(lats);
        mBaiduMap.addOverlay(poly);
    }

    /**
     * 添加图片标志物
     */
    public void addMarker(){
        MarkerOptions opt=new MarkerOptions();
        BitmapDescriptor icon= BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
        opt.icon(icon);
        LatLng point=new LatLng(39,116);
        opt.position(point);
        mBaiduMap.addOverlay(opt);
    }

    /**
     * 添加窗口视图
     */
    public void addInfo(){
        BitmapDescriptor icon=BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
        LatLng point=new LatLng(39,116);

        InfoWindow info=new InfoWindow(icon,point,0,new InfoWindowOnClickListener());
        mBaiduMap.showInfoWindow(info);
    }

    //窗口视图的监听器,InfoWindow的第四个参数
    class InfoWindowOnClickListener implements InfoWindow.OnInfoWindowClickListener{

        @Override
        public void onInfoWindowClick() {
            Toast.makeText(MainActivity.this, "窗口信息被点击了", Toast.LENGTH_SHORT).show();
        }
    }

    //截图点击事件
    public void onClick(View view){
        mBaiduMap.snapshot(new BaiduMap.SnapshotReadyCallback() {
            @Override
            public void onSnapshotReady(Bitmap bitmap) {
                Toast.makeText(MainActivity.this, "地址:"+bitmap, Toast.LENGTH_SHORT).show();
            }
        });
    }

    /**
     * POI检索
     */
    public void poiSearch(){
        BaiduMapPoiSearch poi=new BaiduMapPoiSearch();
        PoiParaOption opt=new PoiParaOption();
        opt.key("肯德基");
        opt.radius(5000);
        LatLng point1=new LatLng(39,116);
        opt.center(point1);
        poi.openBaiduMapPoiNearbySearch(opt,this);
    }

    /**
     * 公交路线规划
     */
    public void rountPlan(){
        BaiduMapRoutePlan plan=new BaiduMapRoutePlan();
        LatLng start=new LatLng(39.93923,116.357428);
        LatLng end=new LatLng(39.91923,116.327428);

        RouteParaOption opt=new RouteParaOption();
        opt.cityName("北京");
        opt.startPoint(start);
        opt.startName("天安门");
        opt.endPoint(end);
        opt.endName("龙泽");

        plan.openBaiduMapTransitRoute(opt,this);

    }


    MyLocationListener myLocationListener;
    LocationClient client;
    /**
     * 定位
     */
    public void location(){
        //允许进行定位 完成后关闭
        mBaiduMap.setMyLocationEnabled(true);
        LocationClientOption opt=new LocationClientOption();
        //坐标系
        opt.setCoorType("bd09ll");
        //打开GPS
        opt.setOpenGps(true);
        //设置定位模式  高精度
        opt.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);

        //设置监听
        client=new LocationClient(this,opt);
        myLocationListener=new MyLocationListener();
        client.registerLocationListener(myLocationListener);
        //启动定位
        client.start();

        mBaiduMap.setMyLocationEnabled(false);
    }

    class MyLocationListener implements BDLocationListener{

        @Override
        public void onReceiveLocation(BDLocation bdLocation) {
            MyLocationData data=new MyLocationData.Builder()
                    .latitude(bdLocation.getLatitude())
                    .longitude(bdLocation.getLongitude())
                    .build();
            mBaiduMap.setMyLocationData(data);

            //将地图中心移动到定位位置
            LatLng lat=new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude());
            MapStatusUpdate update= MapStatusUpdateFactory.newLatLng(lat);
            mBaiduMap.animateMapStatus(update);

            //窗口信息 定位图标
            BitmapDescriptor icon=BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
            InfoWindow infoWindow=new InfoWindow(icon,lat,0,null);
            mBaiduMap.showInfoWindow(infoWindow);
        }
    }
}

导航

这里写图片描述

在前边配置基础上加如下权限到清单文件

这里写图片描述

这里写图片描述

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.hala.mapdemo">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:name=".HalaApplication">

        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="41WOIuD9aoOcGqEElSGCmUWaMyxwVtRC " />

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service android:name="com.baidu.location.f"
            android:enabled="true" android:process=":remote">
        </service>

    </application>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    //获取设备网络状态,禁用后无法获取网络状态
    <uses-permission android:name="android.permission.INTERNET"/>
    //网络权限,当禁用后,无法进行检索等相关业务
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    //读取设备硬件信息,统计数据
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    //读取系统信息,包含系统版本等信息,用作统计
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    //获取设备的网络状态,鉴权所需网络代理
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    //允许sd卡写权限,需写入地图数据,禁用后无法显示地图
    <uses-permission android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />
    //获取统计数据
    <uses-permission android:name="android.permission.GET_TASKS" />
    //鉴权所需该权限获取进程列表
    <uses-permission android:name="android.permission.CAMERA" />
    //使用步行AR导航,配置Camera权限

    <!-- 这个权限用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <!-- 这个权限用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <!-- 用于读取手机当前的状态-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <!-- 访问网络,网络定位需要上网-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- SD卡读取权限,用户写入离线定位数据-->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
        tools:ignore="ProtectedPermissions"></uses-permission>

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCES_MOCK_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_GPS" />
    <!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? -->
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />
    <!-- 来电消音 -->
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!-- 摄影机 -->
    <uses-permission android:name="android.permission.CAMERA" />

</manifest>

这里写图片描述

Main2Activity.java

package com.hala.mapdemo;

import android.content.Intent;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.baidu.navisdk.adapter.BNRoutePlanNode;
import com.baidu.navisdk.adapter.BaiduNaviManager;

import java.io.File;
import java.util.ArrayList;
import java.util.List;


public class Main2Activity extends AppCompatActivity {

    private Button mBtnStart;
    private BaiduNaviManager mBaiduNaviManager;
    private BNRoutePlanNode sNode;
    private BNRoutePlanNode eNode;

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

        //导航初始化
        mBaiduNaviManager=BaiduNaviManager.getInstance();
        mBaiduNaviManager.init(this,
                getSdcardRootPath(),
                getAppFolderName(),
                new MyNaviInitListener(),
                null,null,null);

        mBtnStart=(Button)this.findViewById(R.id.btn_start);
        mBtnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //发起导航线路规划
                if(BaiduNaviManager.isNaviInited()){
                    List<BNRoutePlanNode> nodes=new ArrayList<BNRoutePlanNode>();
                    sNode = new BNRoutePlanNode(116.30142, 40.05087, "百度大厦", "百度大厦", BNRoutePlanNode.CoordinateType.WGS84);
                    eNode = new BNRoutePlanNode(116.39750, 39.90882, "北京天安门", "北京天安门", BNRoutePlanNode.CoordinateType.WGS84);
                    nodes.add(sNode);
                    nodes.add(eNode);
                    mBaiduNaviManager.launchNavigator(Main2Activity.this,nodes,0,true,new MyRoutePlanListener());
                }
            }
        });
    }

    //线路规划监听事件
    class MyRoutePlanListener implements BaiduNaviManager.RoutePlanListener{

        //跳转到导航的过程界面
        @Override
        public void onJumpToNavigator() {
            Intent start=new Intent(Main2Activity.this,NaviActivity.class);
            start.putExtra("node",sNode);
            startActivity(start);
        }

        @Override
        public void onRoutePlanFailed() {

        }
    }

    //初始化导航监听事件
    class MyNaviInitListener implements BaiduNaviManager.NaviInitListener{

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

        }

        @Override
        public void initStart() {

        }

        @Override
        public void initSuccess() {

        }

        @Override
        public void initFailed() {

        }
    }

    //获取sd卡的路径
    public String getSdcardRootPath(){
        return Environment.getDownloadCacheDirectory().getAbsolutePath();
    }

    //获取目录名称
    public String getAppFolderName(){
        File folder=new File(Environment.getExternalStorageDirectory(),"Emilia");
        if(!folder.exists()){
            folder.mkdirs();
        }
        return folder.getAbsolutePath();
    }
}

布局文件 activity_main2.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Main2Activity">

    <Button
        android:id="@+id/btn_start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="发起导航"/>

</android.support.constraint.ConstraintLayout>

NaviActivity.java

package com.hala.mapdemo;

import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import com.baidu.navisdk.adapter.BNRouteGuideManager;
import com.baidu.navisdk.adapter.BNRoutePlanNode;

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

import static com.baidu.navisdk.adapter.BNRouteGuideManager.getInstance;


//导航过程页面
public class NaviActivity extends AppCompatActivity {

    private BNRouteGuideManager mBnRouteGuideManager;
    private BNRoutePlanNode sNode;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mBnRouteGuideManager= getInstance();
        //设置图层
        sNode= (BNRoutePlanNode) this.getIntent().getSerializableExtra("node");
        setCustomItem();

        View view=mBnRouteGuideManager.onCreate(this,null);

        setContentView(view);
    }

    //设置图层
    public  void setCustomItem(){
        List<BNRouteGuideManager.CustomizedLayerItem> items=new ArrayList<BNRouteGuideManager.CustomizedLayerItem>();
        Drawable icon=this.getResources().getDrawable(R.mipmap.ic_launcher);
        BNRouteGuideManager.CustomizedLayerItem item=
                new BNRouteGuideManager.CustomizedLayerItem(
                sNode.getLongitude(), sNode.getLatitude(),
                BNRoutePlanNode.CoordinateType.WGS84,
                        icon,
                        BNRouteGuideManager.CustomizedLayerItem.ALIGN_CENTER);
        items.add(item);
        mBnRouteGuideManager.setCustomizedLayerItems(items);
        //是否显示自定义图层
        mBnRouteGuideManager.showCustomizedLayer(true);

    }


    @Override
    protected void onResume() {
        super.onResume();
        mBnRouteGuideManager.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mBnRouteGuideManager.onPause();
    }

    @Override
    protected void onStop() {
        super.onStop();
        mBnRouteGuideManager.onStop();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mBnRouteGuideManager.onDestroy();
    }

    //参数改变时也跟着改变
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mBnRouteGuideManager.onConfigurationChanged(newConfig);
    }
}

全景图

这里写图片描述

这里写图片描述

activity_main3.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <com.baidu.lbsapi.panoramaview.PanoramaView
        android:id="@+id/pano"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

</RelativeLayout>

MainActivity.java

package com.hala.mapdemo;

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

import com.baidu.lbsapi.BMapManager;
import com.baidu.lbsapi.MKGeneralListener;
import com.baidu.lbsapi.panoramaview.ImageMarker;
import com.baidu.lbsapi.panoramaview.PanoramaView;
import com.baidu.lbsapi.tools.Point;

public class Main3Activity extends AppCompatActivity {

    private BMapManager manager;
    private PanoramaView mPanoramaView;

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

        manager=new BMapManager(getApplicationContext());
        manager.init(new MyMKGeneralListener());

        mPanoramaView=(PanoramaView) this.findViewById(R.id.pano);
        //根据经纬度坐标设置全景图
        mPanoramaView.setPanorama(116.400244,39.963175);

        //添加标记
        ImageMarker icon=new ImageMarker();
        icon.setMarker(this.getResources().getDrawable(R.mipmap.ic_launcher));
        icon.setMarkerPosition(new Point(116.400244,39.963175));
        mPanoramaView.addMarker(icon);

    }

    class MyMKGeneralListener implements MKGeneralListener {

        @Override
        public void onGetPermissionState(int states) {
            if(states!=300){
                Toast.makeText(Main3Activity.this, "授权成功", Toast.LENGTH_LONG).show();
            }else{
                Toast.makeText(Main3Activity.this, "授权失败", Toast.LENGTH_LONG).show();
            }
        }

    }

    @Override
    protected void onPause() {
        super.onPause();
        mPanoramaView.onPause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        mPanoramaView.onResume();
    }

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

猜你喜欢

转载自blog.csdn.net/qq_37527943/article/details/79997802
今日推荐