您现在的位置是:主页 > news > 中国e网网站建设/百度最新版本2022

中国e网网站建设/百度最新版本2022

admin2025/5/25 16:04:11news

简介中国e网网站建设,百度最新版本2022,高端画册设计,楚雄网站建设随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) 在本文中将演示百度地图的操作功能,包括缩放,旋转,视角切换,点击,双击,长按事件触发的操作…

中国e网网站建设,百度最新版本2022,高端画册设计,楚雄网站建设随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) 在本文中将演示百度地图的操作功能,包括缩放,旋转,视角切换,点击,双击,长按事件触发的操作…

随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

在本文中将演示百度地图的操作功能,包括缩放,旋转,视角切换,点击,双击,长按事件触发的操作以及截图等。百度地图本来就内置有缩放,旋转功能,那么在这里,截图(其实很多手机也自带截图功能)以及点击事件的监听算是比较有实际意义的功能。代码原型来源百度demo:

Activity:

package com.home;import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.MKMapTouchListener;
import com.baidu.mapapi.map.MKMapViewListener;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapPoi;
import com.baidu.mapapi.map.MapView;
import com.baidu.platform.comapi.basestruct.GeoPoint;import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;public class ControlBMapActivity extends Activity {/*** MapView 是地图主控件*/private MapView mMapView = null;/*** 用MapController完成地图控制*/private MapController mMapController = null;/*** MKMapViewListener 用于处理地图事件回调*/MKMapViewListener mMapListener = null;/*** 用于截获屏坐标*/MKMapTouchListener mapTouchListener = null;/*** 当前地点击点*/private GeoPoint currentPt = null;/*** 控制按钮*/private Button zoomButton = null;private Button rotateButton = null;private Button overlookButton = null;private Button saveScreenButton = null;private String touchType = null;/*** 用于显示地图状态的面板*/private TextView mStateTextView = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);DemoApplication app = (DemoApplication) this.getApplication();if (app.mBMapManager == null) {app.mBMapManager = new BMapManager(this);/*** 如果BMapManager没有初始化则初始化BMapManager*/app.mBMapManager.init(DemoApplication.strKey,new DemoApplication.MyGeneralListener());}setContentView(R.layout.control_main);mMapView = (MapView) findViewById(R.id.bmapView);/*** 获取地图控制器*/mMapController = mMapView.getController();/*** 设置地图是否响应点击事件 .*/mMapController.enableClick(true);/*** 设置地图缩放级别*/mMapController.setZoom(12);mStateTextView = (TextView) findViewById(R.id.state);/*** 初始化地图事件监听*/initListener();/*** 将地图默认移动至天安门*/double cLat = 39.945;double cLon = 116.404;GeoPoint p = new GeoPoint((int) (cLat * 1E6), (int) (cLon * 1E6));mMapController.setCenter(p);}private void initListener() {/*** 设置地图点击事件监听*/mapTouchListener = new MKMapTouchListener() {@Overridepublic void onMapClick(GeoPoint point) {touchType = "单击";currentPt = point;updateMapState();}@Overridepublic void onMapDoubleClick(GeoPoint point) {touchType = "双击";currentPt = point;updateMapState();}@Overridepublic void onMapLongClick(GeoPoint point) {touchType = "长按";currentPt = point;updateMapState();}};mMapView.regMapTouchListner(mapTouchListener);/*** 设置地图事件监听*/mMapListener = new MKMapViewListener() {@Overridepublic void onMapMoveFinish() {/*** 在此处理地图移动完成回调 缩放,平移等操作完成后,此回调被触发*/updateMapState();}@Overridepublic void onClickMapPoi(MapPoi mapPoiInfo) {/*** 在此处理底图poi点击事件 显示底图poi名称并移动至该点 设置过:* mMapController.enableClick(true); 时,此回调才能被触发* */}@Overridepublic void onGetCurrentMap(Bitmap b) {/*** 当调用过 mMapView.getCurrentMap()后,此回调会被触发 可在此保存截图至存储设备* */if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {Toast.makeText(ControlBMapActivity.this, "请插入SD卡",Toast.LENGTH_SHORT).show();return;}File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis() + ".png");FileOutputStream out;try {out = new FileOutputStream(file);if (b.compress(Bitmap.CompressFormat.PNG, 70, out)) {out.flush();out.close();}Toast.makeText(ControlBMapActivity.this,"屏幕截图成功,图片存在: " + file.toString(),Toast.LENGTH_SHORT).show();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}@Overridepublic void onMapAnimationFinish() {/*** 地图完成带动画的操作(如: animationTo())后,此回调被触发*/updateMapState();}@Overridepublic void onMapLoadFinish() {}};mMapView.regMapViewListener(DemoApplication.getInstance().mBMapManager,mMapListener);/*** 设置按键监听*/zoomButton = (Button) findViewById(R.id.zoombutton);rotateButton = (Button) findViewById(R.id.rotatebutton);overlookButton = (Button) findViewById(R.id.overlookbutton);saveScreenButton = (Button) findViewById(R.id.savescreen);OnClickListener onClickListener = new OnClickListener() {@Overridepublic void onClick(View view) {if (view.equals(zoomButton)) {perfomZoom();} else if (view.equals(rotateButton)) {perfomRotate();} else if (view.equals(overlookButton)) {perfomOverlook();} else if (view.equals(saveScreenButton)) {// 截图,在MKMapViewListener中保存图片mMapView.getCurrentMap();Toast.makeText(ControlBMapActivity.this, "正在截取屏幕图片...",Toast.LENGTH_SHORT).show();}updateMapState();}};zoomButton.setOnClickListener(onClickListener);rotateButton.setOnClickListener(onClickListener);overlookButton.setOnClickListener(onClickListener);saveScreenButton.setOnClickListener(onClickListener);}/*** 处理缩放,sdk缩放级别范围:[3.0,19.0],小于3.0将按3.0处理;大于19.0将按19.0处理*/private void perfomZoom() {EditText t = (EditText) findViewById(R.id.zoomlevel);try {float zoomLevel = Float.parseFloat(t.getText().toString());mMapController.setZoom(zoomLevel);} catch (NumberFormatException e) {Toast.makeText(this, "请输入正确的缩放级别,范围: [3.0,19.0],只能输入浮点型或整型",Toast.LENGTH_SHORT).show();}}/*** 处理旋转 ,旋转角单位:度 ,逆时针旋转*/private void perfomRotate() {EditText t = (EditText) findViewById(R.id.rotateangle);try {int rotateAngle = Integer.parseInt(t.getText().toString());mMapController.setRotation(rotateAngle);} catch (NumberFormatException e) {Toast.makeText(this, "请输入正确的旋转角度,只能为整型", Toast.LENGTH_SHORT).show();}}/*** 处理俯视 俯角范围: -45 ~ 0 , 单位: 度*/private void perfomOverlook() {EditText t = (EditText) findViewById(R.id.overlookangle);try {int overlookAngle = Integer.parseInt(t.getText().toString());mMapController.setOverlooking(overlookAngle);} catch (NumberFormatException e) {Toast.makeText(this, "请输入正确的俯角,范围:  -45 ~ 0", Toast.LENGTH_SHORT).show();}}/*** 更新地图状态显示面板*/private void updateMapState() {if (mStateTextView == null) {return;}String state = "";if (currentPt == null) {state = "点击、长按、双击地图以获取经纬度和地图状态";} else {state = String.format(touchType + ",当前经度 : %f 当前纬度:%f",currentPt.getLongitudeE6() * 1E-6,currentPt.getLatitudeE6() * 1E-6);}state += "\n";state += String.format("zoom level= %.1f    rotate angle= %d   overlaylook angle=  %d",mMapView.getZoomLevel(), mMapView.getMapRotation(),mMapView.getMapOverlooking());mStateTextView.setText(state);}@Overrideprotected void onPause() {/*** MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()*/mMapView.onPause();super.onPause();}@Overrideprotected void onResume() {/*** MapView的生命周期与Activity同步,当activity恢复时需调用MapView.onResume()*/mMapView.onResume();super.onResume();}@Overrideprotected void onDestroy() {/*** MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()*/mMapView.destroy();super.onDestroy();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mMapView.onSaveInstanceState(outState);}@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {super.onRestoreInstanceState(savedInstanceState);mMapView.onRestoreInstanceState(savedInstanceState);}
}

布局XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><LinearLayoutandroid:id="@+id/layout_bottom"android:layout_width="match_parent"android:layout_height="50dip"android:layout_alignParentBottom="true"android:orientation="horizontal" ><Buttonandroid:id="@+id/zoombutton"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="缩放" /><EditTextandroid:id="@+id/zoomlevel"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="10" /><Buttonandroid:id="@+id/rotatebutton"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="旋转" /><EditTextandroid:id="@+id/rotateangle"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:numeric="integer"android:text="90" /><Buttonandroid:id="@+id/overlookbutton"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="俯视" /><EditTextandroid:id="@+id/overlookangle"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:text="-30" /></LinearLayout><TextViewandroid:id="@+id/state"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_above="@id/layout_bottom"android:text="点击、长按、双击地图以获取经纬度和地图状态" /><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_above="@id/state"android:orientation="vertical" ><com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="match_parent"android:layout_height="match_parent"android:clickable="true" /><Buttonandroid:id="@+id/savescreen"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_alignParentTop="true"android:layout_marginTop="10dip"android:text="截图" /></RelativeLayout></RelativeLayout>

Application类及Manifest同上文。

附上图片效果: