百度地图(让我显示在地图上)
来源:互联网 发布:2017天猫双11数据分析 编辑:程序博客网 时间:2024/05/18 09:20
使用方法:
1 使用MyLocationData.Builder类
MyLocationData.Builder locationBuilder = new MyLocationData.Builder();
locationBuilder.latitude(39.915);
locationBuilder.longitude(116.404);
2 设置封装的信息,MyLocationData.Builder()
MyLocationData.Builder locationBuilder = new locationBuilder.build();
baiduMap.setMyLocationEnabled(true);
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.map.MyLocationData;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(); baiduMap.setMyLocationEnabled(true);//开始设备的显示位置功能 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 ; } MyLocationData.Builder locationBuilder = new MyLocationData.Builder(); locationBuilder.latitude(location.getLatitude()); locationBuilder.longitude(location.getLongitude()); MyLocationData locationData = locationBuilder.build(); baiduMap.setMyLocationData(locationData); } 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(),实现地图生命周期管理 baiduMap.setMyLocationEnabled(false);//关闭设备随我的位置显示 mMapView.onDestroy(); if (locationManager!=null){ 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 ; } //关闭程序时将监听器移除 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"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.baidumaptest"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="rpoNrBMkzXtVjIRpk7RfgdnbNViKPH9G" /> <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.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_GPS" /></manifest>
<?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--学习(三)------让自己的位置显示在地图上之“火星差”
- 安卓学习笔记:让自己显示在地图上(使用百度地图API)
- 通过百度地图API显示当前位置在地图上(图标显示)--第三方开源--百度地图(二)
- 百度地图__定位显示在地图上
- 百度地图开发,在地图上显示当前位置
- 将手绘地图或自制地图显示在网页上(利用百度API)
- android百度地图开发V4.5最新版(4)---显示自己的位置在地图上
- 百度地图经纬度在地图上体现
- 百度地图-----显示地图
- 在百度地图上显示有方向的路径
- iOS 开发 百度地图 在模拟器上只显示网格!
- 百度地图多个点显示在一个页面上
- 百度定位:定位自己位置,并显示在地图上
- 百度地图让我起飞了
- 从Access数据库中取出定位点,通过百度地图API在地图上显示
- 百度地图之九如何在一个地图上显示多条导航路线
- ACM比赛
- 大数运算之加法
- OWASP安全编码规范快速参考指南
- POJ 3253 Fence Repair
- CSS总结--百度面试题
- 百度地图(让我显示在地图上)
- chrome插件开发之:处理由于注入css导致页面的ui出现错位的问题
- HYSBZ 1799 self 同类分布 数位DP -
- Linux 下查找 .so 文件中函数入口
- Codeforces Round #337 (Div. 2)-C. Harmony Analysis
- POJ 2186 Popular Cows
- hdu2202
- 树莓派如何共享网络到LAN
- 常用查找算法