百度地图全景——百度经纬度显示全景

百度地图全景的显示

我是用的是百度全景SDK2.6.2的版本,之前的版本android8不兼容,在是用这最新的版本中,会碰到一些闪退问题
在这边我就直接上代码!!!本人话少!
在AndroidManifest.xml文件中,加入权限

 <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="false"
        android:resizeable="true"
        android:smallScreens="true" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />

写一个类继承Application

import com.baidu.lbsapi.BMapManager;
import com.baidu.lbsapi.MKGeneralListener;
import android.app.Application;
import android.content.Context;
import android.util.Log;
import android.widget.Toast;

public class PanorApplication extends Application {
	private static PanorApplication mInstance = null;
	public BMapManager mBMapManager = null;

	@Override
	public void onCreate() {
		super.onCreate();
		mInstance = this;
		initEngineManager(this);
	}

	public void initEngineManager(Context context) {
		if (mBMapManager == null) {
			mBMapManager = new BMapManager(context);
		}

		if (!mBMapManager.init(new MyGeneralListener())) {
			Toast.makeText(
					PanorApplication.getInstance().getApplicationContext(),
					"BMapManager  初始化错误!", Toast.LENGTH_LONG).show();
		}
		Log.d("ljx", "initEngineManager");
	}

	public static PanorApplication getInstance() {
		return mInstance;
	}

	// 常用事件监听,用来处理通常的网络错误,授权验证错误等
	static class MyGeneralListener implements MKGeneralListener {

		@Override
		public void onGetPermissionState(int iError) {
			// 非零值表示key验证未通过
			if (iError != 0) {
				// 授权Key错误:
				Toast.makeText(
						PanorApplication.getInstance()
								.getApplicationContext(),
						"请在AndoridManifest.xml中输入正确的授权Key,并检查您的网络连接是否正常!error: "
								+ iError, Toast.LENGTH_LONG).show();
			} else {
				Toast.makeText(
						PanorApplication.getInstance()
								.getApplicationContext(), "key认证成功",
						Toast.LENGTH_LONG).show();
			}
		}
	}
}

接下来便是核心代码,xml的布局也是很简单的,先看一下布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <com.baidu.lbsapi.panoramaview.PanoramaView
       android:id="@+id/panorama"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clickable="true" />

</LinearLayout>

核心代码

package com.example.mypanorama;

import com.baidu.lbsapi.BMapManager;
import com.baidu.lbsapi.model.BaiduPanoData;
import com.baidu.lbsapi.panoramaview.PanoramaRequest;
import com.baidu.lbsapi.panoramaview.PanoramaView;
import com.baidu.lbsapi.panoramaview.PanoramaViewListener;
import com.baidu.lbsapi.panoramaview.PanoramaView.ImageDefinition;
import com.example.mypanorama.PanorApplication.MyGeneralListener;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;

public class PanoramaMain extends Activity {
	private Context context;
	private PanoramaView mPanoramaView;
	private double lat = 39.91403075654526;
	private double lng = 116.40391285827147;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		initBMapManager();
		setContentView(R.layout.pannorama_main_layout);
		context = PanoramaMain.this;
		getView();
		
	}

	private void getView() {
		mPanoramaView = (PanoramaView) findViewById(R.id.panorama);
		//是否显示邻接街景箭头(有邻接全景的时候)
		mPanoramaView.setShowTopoLink(true);
		
		//设置全景图的俯仰角
		mPanoramaView.setPanoramaPitch(90);
		
		//获取当前全景图的俯仰角
		//更新俯仰角的取值范围:室外景[-15, 90], 室内景[-25, 90],
		//90为垂直朝上方向,0为水平方向
		mPanoramaView.getPanoramaPitch();
		
		//设置全景图的偏航角
		mPanoramaView.setPanoramaHeading(60);
		
		//获取当前全景图的偏航角
		mPanoramaView.getPanoramaHeading();
		
		//设置全景图的缩放级别
		//level分为1-5级
		mPanoramaView.setPanoramaLevel(1);
		
		//获取当前全景图的缩放级别
		mPanoramaView.getPanoramaLevel();
		
		//全景的事件监听要在setPanorama之前使用,否者可能会引发异常
		mPanoramaView.setPanoramaViewListener(new PanoramaViewListener() {
			
			@Override
			public void onMoveStart() {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onMoveEnd() {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onMessage(String arg0, int arg1) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onLoadPanoramaError(String arg0) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onLoadPanoramaEnd(String arg0) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onLoadPanoramaBegin() {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onDescriptionLoadEnd(String arg0) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onCustomMarkerClick(String arg0) {
				// TODO Auto-generated method stub
				
			}
		});
		mPanoramaView
				.setPanoramaImageLevel(ImageDefinition.ImageDefinitionHigh);
		mPanoramaView.setPanorama(lng, lat, PanoramaView.COORDTYPE_BD09LL);
	}
//初始化BMapManager
	private void initBMapManager() {
		PanorApplication app = (PanorApplication) this.getApplication();
		if (app.mBMapManager == null) {
			app.mBMapManager = new BMapManager(app);
			app.mBMapManager.init(new PanorApplication.MyGeneralListener());
		}

	}
	 // 测试获取内景的相册描述信息和服务推荐描述信息
//	private void testPanoramaRequest() {
//		new Thread() {
//			@Override
//			public void run() {
//				PanoramaRequest panoramaRequest = PanoramaRequest
//						.getInstance(context);
//				 // 通过百度经纬度坐标获取当前位置相关全景信息,包括是否有外景,外景PID,外景名称等
//				BaiduPanoData mPanDataWithLaton = panoramaRequest
//						.getPanoramaInfoByLatLon(lng, lat);
//
//			}
//		}.start();
//	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		mPanoramaView.destroy();
		super.onDestroy();
	}
}

代码这么写在android8的上系统上基本没什么问题!!!如果有什么不对的地方还望指点一番!!!

猜你喜欢

转载自blog.csdn.net/lonely0512/article/details/84821288