百度地图详解使用,显示自己的当前位置BaiduMap

编程入门 行业动态 更新时间:2024-10-26 16:24:54

百度地图详解使用,显示<a href=https://www.elefans.com/category/jswz/34/1771270.html style=自己的当前位置BaiduMap"/>

百度地图详解使用,显示自己的当前位置BaiduMap

第一步:注册百度开发者账号 /,下载对应的jar和Key

第二步:创建应用

填写正确的SHA1和应用的包名,并且下载

第三步:解压上面的SDK_Lib压缩包文件

libs下放入jar包,并且添加到依赖

main下面新建文件夹JNIlibs放入这些文件

第四步:AndroidManifest.xml文件配置

加入所需要的权限

<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 --><uses-permission android:name="android.permission.INTERNET" /><!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 这个权限用于进行网络定位 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 这个权限用于访问GPS定位 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

application中添加

 <meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="value"></meta-data>

value 是创建应用的

布局文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android=""xmlns:app=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="match_parent"android:layout_height="match_parent"android:clickable="true" /></android.support.constraint.ConstraintLayout>

MainActivity

package com.yuan.testbaidumap;import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;public class MainActivity extends AppCompatActivity {private MapView mMapView;private BaiduMap mBaiduMap;private boolean isFirstLoc = true;private MyLocationConfiguration.LocationMode locationMode; //当前定位模式@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);mMapView = findViewById(R.id.bmapView);mBaiduMap = mMapView.getMap();LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {return;}locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,1,new LocationListener() {@Overridepublic void onLocationChanged(Location location) {locationUpdates(location);}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {}@Overridepublic void onProviderEnabled(String provider) {}@Overridepublic void onProviderDisabled(String provider) {}});Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);locationUpdates(location);}private void locationUpdates(Location location) {if (location != null) {LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());Log.i("Location", "纬度:" + location.getLatitude() + "经度:" + location.getLongitude());if (isFirstLoc) {MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);mBaiduMap.animateMapStatus(u); // 设置地图位置isFirstLoc = false;}// 构造定位数据MyLocationData locationData = new MyLocationData.Builder().accuracy(location.getAccuracy()).direction(100) // 设置方向信息.latitude(location.getLatitude()) // 设置维度坐标.longitude(location.getLongitude()) // 经度.build();mBaiduMap.setMyLocationData(locationData); //设置定位数据BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);locationMode = MyLocationConfiguration.LocationMode.NORMAL; // 设置定位模式MyLocationConfiguration configuration = new MyLocationConfiguration(locationMode, true, bitmapDescriptor);mBaiduMap.setMyLocationConfiguration(configuration); // 显示定位图标} else {Log.i("Location","没有获取到GPS信息");}}@Overrideprotected void onStart() {super.onStart();mBaiduMap.setMyLocationEnabled(true); // 开启定位图层}@Overrideprotected void onResume() {super.onResume();mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();mMapView.onPause();}@Overrideprotected void onStop() {super.onStop();mBaiduMap.setMyLocationEnabled(false); // 停止图层}@Overrideprotected void onDestroy() {super.onDestroy();mMapView.onDestroy();mMapView = null;}
}

测试如果没有数据,请到室外或者空旷的地方。

更多推荐

百度地图详解使用,显示自己的当前位置BaiduMap

本文发布于:2023-07-03 14:17:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1007554.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自己的   当前位置   详解   地图   BaiduMap

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!