Android_百度地图基本用法3

  1 /*
  2  *1.实现定位
  3  *2.引入方向传感器
  4  *3.自定义位置图标
  5  * */
  6 public class MainActivity extends Activity {
  7     MapView mapView;
  8     BaiduMap mBaiduMap;
  9     // 定位相关
 10     private LocationClient mLocationClient;
 11     private MyLocationListener mLocationListener;
 12     private boolean isFirst = true;
 13     // 记录经纬度
 14     private double mLatitude;
 15     private double mLongtitude;
 16     // 自定义位置图标
 17     private BitmapDescriptor mIconLocation;
 18     private MyOrientationListener myOrientationListener;
 19     private float mCurrentX;
 20
 21     @Override
 22     protected void onCreate(Bundle savedInstanceState) {
 23         super.onCreate(savedInstanceState);
 24         SDKInitializer.initialize(getApplicationContext());
 25         requestWindowFeature(Window.FEATURE_NO_TITLE);
 26         setContentView(R.layout.fragment_main);
 27         mapView = (MapView) findViewById(R.id.bmapView);
 28         mBaiduMap = mapView.getMap();
 29         // 设置地图标尺500m
 30         MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);
 31         mBaiduMap.setMapStatus(msu);
 32
 33         // 初始化定位
 34
 35         mLocationClient = new LocationClient(this);
 36         mLocationListener = new MyLocationListener();
 37         mLocationClient.registerLocationListener(mLocationListener);
 38         LocationClientOption option = new LocationClientOption();
 39         option.setCoorType("bd09ll");// 坐标类型
 40         option.setIsNeedAddress(true);
 41         option.setOpenGps(true);
 42         option.setScanSpan(1000);// 每隔1秒请求
 43         mLocationClient.setLocOption(option);
 44
 45         // 初始化图标
 46         mIconLocation = BitmapDescriptorFactory
 47                 .fromResource(R.drawable.navi_map_gps_locked);
 48         myOrientationListener = new MyOrientationListener(this);
 49         myOrientationListener
 50                 .setOnOrientationListener(new OnOrientationListener() {
 51
 52                     @Override
 53                     public void onOrientationChanged(float X) {
 54                         // TODO Auto-generated method stub
 55                         mCurrentX = X;
 56                     }
 57                 });
 58
 59     }
 60
 61     public void but(View view) {
 62         switch (view.getId()) {
 63
 64         // 定位到我的位置
 65         case R.id.back:
 66             LatLng latLng = new LatLng(mLatitude, mLongtitude);
 67             MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
 68             mBaiduMap.animateMapStatus(msu);
 69
 70             break;
 71
 72         }
 73
 74     }
 75
 76     @Override
 77     protected void onResume() {
 78
 79         super.onResume();
 80         mapView.onResume();
 81     }
 82
 83     @Override
 84     protected void onStart() {
 85
 86         super.onStart();
 87         // 开启定位
 88         mBaiduMap.setMyLocationEnabled(true);
 89         if (!mLocationClient.isStarted()) {
 90             mLocationClient.start();
 91         }
 92         // 开启方向传感器
 93         myOrientationListener.start();
 94
 95     }
 96
 97     @Override
 98     protected void onStop() {
 99         // TODO Auto-generated method stub
100         super.onStop();
101         // 停止定位
102         mBaiduMap.setMyLocationEnabled(false);
103         mLocationClient.stop();
104         // 停止方向传感器
105         myOrientationListener.stop();
106
107     }
108
109     @Override
110     protected void onPause() {
111         // TODO Auto-generated method stub
112         super.onPause();
113         mapView.onPause();
114     }
115
116     @Override
117     protected void onDestroy() {
118         // TODO Auto-generated method stub
119         super.onDestroy();
120         mapView.onDestroy();
121     }
122
123     private class MyLocationListener implements BDLocationListener {
124
125         @Override
126         public void onReceiveLocation(BDLocation arg0) {
127             // 精度、纬度
128             MyLocationData data = new MyLocationData.Builder()
129                     .direction(mCurrentX).accuracy(arg0.getRadius())
130                     .latitude(arg0.getLatitude())
131                     .longitude(arg0.getLongitude()).build();
132             mBaiduMap.setMyLocationData(data);
133
134             // 设置自定义图标
135             MyLocationConfiguration config = new MyLocationConfiguration(
136                     com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.NORMAL,
137                     true, mIconLocation);
138             mBaiduMap.setMyLocationConfigeration(config);
139
140             // 更新经纬度
141             mLatitude = arg0.getLatitude();
142             mLongtitude = arg0.getLongitude();
143             // 第一次进入,设置用户当前位置
144             if (isFirst) {
145                 LatLng latLng = new LatLng(arg0.getLatitude(),
146                         arg0.getLongitude());
147                 MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
148                 mBaiduMap.animateMapStatus(msu);
149                 isFirst = false;
150                 // 显示地址
151                 Toast.makeText(MainActivity.this, arg0.getAddrStr(), 0).show();
152
153             }
154
155         }
156
157         @Override
158         public void onConnectHotSpotMessage(String arg0, int arg1) {
159             // TODO Auto-generated method stub
160
161         }
162
163     }
164
165 }
 1 public class MyOrientationListener implements SensorEventListener {
 2     private SensorManager mSensorManager;
 3     private Context mContext;
 4     private Sensor mSensor;
 5
 6     private float lastX;
 7
 8     public MyOrientationListener(Context Context) {
 9         this.mContext = Context;
10     }
11   //开始监听
12     public void start() {
13         mSensorManager = (SensorManager) mContext
14                 .getSystemService(Context.SENSOR_SERVICE);
15         if (mSensorManager != null) {
16             // 获得方向传感器
17             mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
18
19         }
20         if (mSensor != null) {
21             mSensorManager.registerListener(this, mSensor,
22                     SensorManager.SENSOR_DELAY_UI);
23         }
24         else {
25             Toast.makeText(mContext, "没有方向传感器", 1).show();
26         }
27
28     }
29
30     public void stop() {
31         mSensorManager.unregisterListener(this);
32
33     }
34
35     @Override
36     public void onSensorChanged(SensorEvent event) {
37
38         if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {
39             float x = event.values[SensorManager.DATA_X];
40             if (Math.abs(x - lastX) > 1.0) {
41                 if (mOnOrientationListener != null) {
42                     mOnOrientationListener.onOrientationChanged(x);
43                 }
44             }
45             lastX = x;
46         }
47     }
48
49     @Override
50     public void onAccuracyChanged(Sensor sensor, int accuracy) {
51
52     }
53
54     private OnOrientationListener mOnOrientationListener;
55
56     public void setOnOrientationListener(
57             OnOrientationListener mOnOrientationListener) {
58         this.mOnOrientationListener = mOnOrientationListener;
59     }
60
61     public interface OnOrientationListener {
62         void onOrientationChanged(float X);
63     }
64 }
时间: 2024-10-30 21:45:13

Android_百度地图基本用法3的相关文章

Winform Echarts 显示百度地图的用法(3)

1,用Echarts 显示百度地图的用法(2)写一个 baidu.html 2,winform页面放一个WebBrowser控件,用来放地图的html页面 3,winform 加载时 将WebBrowser文件放在baidu.html同一个目录下 webBrw_Map.Url = new Uri(Path.Combine(Application.StartupPath, "baidumap.html")); 4,加载地图 (1),根据经纬度查询 var pointX = "3

Echarts 显示百度地图的用法(2)

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=vgQfNjTQDlCar24CrTIdWcwY"></script> <div id="allmap" style="height: 600px"></div><br/> <span id="ln

Echarts 显示百度地图的用法

<div id="allmap" style="height: 1000px"></div> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=vgQfNjTQDlCar24CrTIdWcwY"></script> <script type="text/jav

百度地图API用法(传地址)

网上找了很多都是没用的,非动态用法,最后在官网论坛才问到的 现在来一步一步教大家用 1 这是地址:   http://developer.baidu.com/map/ 选择web开发 先获取密钥   这个是免费的,按他的注册来,一步一步 注册完了之后就到了这里 然后点击创建应用,  随便勾选, 这个访问应用,就是你的密钥了,免费的,下面用的上 进入获取代码的页面 点击 示迾DEMO 关键的地方来了,我们要找的是这个 “ 检索示迾” 这样代码就出来了,好了我们就可以将代码中的东西动态的替换我们的东

百度地图api的用法

功能: 1.点击"江干区",地图自动定位到该区域,并且该区域出现overlay(红色) 2.点击"派出所"."社区"级别时,地图也自动定位同时出现另一种颜色的overlay. 3.点击"查看设备"时,地图上出现marker点,地图自动定位到该marker点. 逻辑: 1.1 从后台获取区域的点(比如某个社区是正方形的,由四个点描绘,那么就读取这四个点),保存到数组points[]中; 1.2 将每个点的经度.纬度信息(两个一组

百度地图api基本用法

首先 ,如果想调用百度地图api,你需要获取一个百度地图api的密钥. 申请密钥很简单,在百度地图api的首页就有相关链接,填写相关信息百度就会给你一个密钥了. 接下来,就是引入百度地图的api 关键代码如下: <script type="text/javascript" src="http://api.map.baidu.com/api?ak=yourkey&v=2.0&services=false"></script> 接

百度地图API的基本用法

首先 ,如果想调用百度地图api,你需要获取一个百度地图api的密钥. 申请秘钥的步骤: 1.搜索百度地图: 2.进入后,先登录然后点击申请密钥: 3. 4.申请成功,拥有密钥 有了密钥之后,引入百度API 列: 1.首页——>开发文档——>web开发——>javascript  API 百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,可帮助您在网站中构建功能丰富.交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HTML5特性

Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

标签: Android百度地图API Key  分类: Android 百度地图开发(2)  最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地图入手,其实他们的用法都差不多,本篇文章就带领大家在自己的Android项目中加入百度地图的功能,接下来我会写一系列关于百度地图的文章,欢迎大家到时候关注!   一 申请API key 在使用百度地图之前,我们必须去申请一个百度地图的API key,申请地址http://lbsyun.baidu.com/a

百度地图API多个点聚合时,标注添加的标签label地图刷新就丢失的问题解决

当将自定义的Marker(含有Label)通过MarkerClusterer 管理的时候,当地图发生任何移动.缩放 的时候,Marker 的Label 就会自动消失. 这个问题主要是由于百度的点聚合API<script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></scrip