定位到我的位置(BaiduMap)
来源:互联网 发布:centos 7 卡在进度条 编辑:程序博客网 时间:2024/04/30 10:51
知识:
百度API中提供BaiMap类,是地图的总控制器。
定位到我的位置过程:
1 获取BaiduMap实例
BaiduMap baiduMap = mapView.getMap();
2 设置百度地图的缩放范围(值越大,百度地图显示的信息越精确)
MapStatusUpdate update = MapStatusUpdateFactory.zoomTo(12.5f);
baiduMap.animateMapStatus(update);
3 定位经纬度,使用LatLang
LatLang ll = new LatLng(39.915,11.404);
MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);baiduMap.animateMapStatus(update);
百度地图api的引入(AndroidStutio):
package com.example.baidumaptest;import android.content.Context;import android.content.pm.PackageManager;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Build;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.Toast;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.model.LatLng;import java.util.List;public class MainActivity extends AppCompatActivity { private MapView mMapView; private BaiduMap baiduMap; private LocationManager locationManager; private String provider; private boolean isFirstLocate = true ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); //获取地图控件引用 mMapView = (MapView) findViewById(R.id.bmapView); baiduMap = mMapView.getMap(); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); List<String> providerList = locationManager.getProviders(true);//表示只有位置提供器才会被返回// if(providerList.contains(LocationManager.GPS_PROVIDER)){// provider = LocationManager.GPS_PROVIDER; //手机gps已坏,无法测试,所以注释// }else if(providerList.contains(LocationManager.NETWORK_PROVIDER)){ provider = LocationManager.NETWORK_PROVIDER; }else { Toast.makeText(this , "No location provider to use",Toast.LENGTH_SHORT).show(); return; } if ( Build.VERSION.SDK_INT >= 23 && ContextCompat.checkSelfPermission( this, android.Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission( this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return ; } Location location = locationManager.getLastKnownLocation(provider); if(location != null){ navigateTo(location); } locationManager.requestLocationUpdates(provider , 5000 , 1,locationListener); } private void navigateTo(Location location){ if (isFirstLocate){//isFirstLocate使用为了防止多次调用animate(),只需要开始定位的时候调用一次就行了 // String currentPosition = "latitude is " +location.getLatitude()+"\n"+"longitude is"+ location.getLongitude(); // System.out.println(currentPosition); LatLng ll = new LatLng(location.getLatitude(),location.getLongitude()); MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll); baiduMap.animateMapStatus(update); update = MapStatusUpdateFactory.zoomTo(16f); baiduMap.animateMapStatus(update); isFirstLocate = false ; } } LocationListener locationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { //更新当前的位置信息 if(location!=null){ navigateTo(location); } } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } }; @Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); if (locationManager!=null){ //关闭程序时将监听器移除 locationManager.removeUpdates(locationListener); } } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); }}
<?xml version="1.0" encoding="utf-8"?><LinearLayout 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.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /></LinearLayout>
0 0
- 定位到我的位置(BaiduMap)
- 百度地图BaiduMap--学习(二)------定位到自己的位置之没反应
- 定位到我的位置
- 【BaiduMapSDK系列】定位到我的位置
- BaiduMap SDK2.1.1 — 我的位置图层(MyLocationOverlay)
- Android BaiduMap 定位到指定坐标
- Android位置服务--BaiduMap的使用(1)
- Android位置服务--BaiduMap的使用(2)
- 百度地图 baiduMap(二) 定位
- 手机定位:获取我的位置经纬度
- scrollview显示到任意位置的定位
- android baiduMap 以自己的定位为中心显示
- Android 位置服务——BaiduMap的使用
- Javascript设置和获取Textarea的光标位置的方法(亲测有用),可定位光标到某个位置
- 百度地图总结第三篇之定位(我的位置)
- 如果我,退回到好朋友的位置
- 我的高德地图之定位,Marker,位置信息。
- 基于地图的短信追踪小练习(2)百度地图定位到自己的位置
- MongoDB学习(三) 基本操作
- 一致性哈希算法的一种PHP实现代码(上一篇文章)
- STL使用vtk类降幂
- oracle数据库:update更新多表总结
- 学生管理系统,实现学生的增删改查
- 定位到我的位置(BaiduMap)
- js中将字符串转日期的函数,亲测兼容所有ie
- 初学C语言的学习计划
- 最近做一个通讯录的功能 用到了搜索 iOS上没有一个完整的三方自己写了一个
- RTP/RTSP/RTCP的区别
- VMware 11安装Mac OS X 10.10
- 知识竞赛时,PPT模板如何选择确定,或自定义?
- int ,long , long long类型的范围
- 常用的cocos js命令和nw.js命令