导入包

implementation 'com.google.android.gms:play-services-maps:17.0.0'implementation 'com.google.android.gms:play-services-basement:17.1.1'implementation 'com.google.android.gms:play-services-base:17.1.0'implementation 'com.google.android.gms:play-services-gcm:17.0.0'implementation 'com.google.android.gms:play-services-location:17.0.0'implementation 'com.google.android.libraries.places:places:2.1.0'

AndroidManifest.xml 的application添加

 

密钥在这里申请

布局文件中使用

 

Java中使用

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()                .findFragmentById(R.id.map);if (mapFragment != null) {    mapFragment.getMapAsync(this);}

当前实现OnMapReadyCallback,并需要实现onMapReady方法

@Overridepublic void onMapReady(GoogleMap googleMap) {    this.googleMap = googleMap;}

画标注、画轨迹

public void setTrackView(List details) {    PolylineOptions options = new PolylineOptions();    options.color(getResources().getColor(R.color.colorAccent));    options.width(getResources().getDimension(R.dimen.track_link_line_width));    LatLngBounds.Builder boundsBuilder = LatLngBounds.builder();    for (SportSceneRunningDetailModel.Detail detail : details) {        com.google.android.gms.maps.model.LatLng latLng = new com.google.android.gms.maps.model.LatLng(detail.getLatitude(), detail.getLongitude());        options.add(latLng);        boundsBuilder.include(latLng);    }    googleMap.addPolyline(options);    // 绘制起点    BitmapDescriptor bitmap = com.google.android.gms.maps.model.BitmapDescriptorFactory.fromResource(R.mipmap.ic_track_start);    com.google.android.gms.maps.model.LatLng latLng = new com.google.android.gms.maps.model.LatLng(details.get(0).getLatitude(), details.get(0).getLongitude());    googleMap.addMarker(new com.google.android.gms.maps.model.MarkerOptions().position(latLng).icon(bitmap).anchor(0.5f, 0.5f));    // 绘制终点    bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.ic_track_end);    latLng = new LatLng(details.get(details.size() - 1).getLatitude(), details.get(details.size() - 1).getLongitude());    googleMap.addMarker(new MarkerOptions().position(latLng).icon(bitmap).anchor(0.5f, 0.5f));    // 会根据所以标注和轨迹自动绽放地图大小,达到所有点和线都在屏幕中显示    CameraUpdate mCameraUpdate = CameraUpdateFactory.newLatLngBounds(boundsBuilder.build(), 100);    googleMap.moveCamera(mCameraUpdate);}

SportSceneRunningDetailModel.Detail是项目中的实体,根据自己项目换成经纬度列表就行。

利用原生方式定位

LocationManager mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);// 执行下面代码前要判断一下ACCESS_FINE_LOCATION和ACCESS_COARSE_LOCATION权限mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 1, this);

当前实现LocationListener接口,下面需要实现的方法,定位成功后会调用onLocationChanged方法。

@Overridepublic void onLocationChanged(Location location) {    LogUtil.d("定位成功:" + location.getLatitude() + "," + location.getLongitude());}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {}@Overridepublic void onProviderEnabled(String provider) {}@Overridepublic void onProviderDisabled(String provider) {}

更多相关文章

  1. Android点击按钮实现全屏的代码
  2. android 利用startActivityForResult()方法得到另一个Activity的
  3. 高德地图自定义Marker点击时出现的InfoWindow
  4. 重装Ubuntu13.04后需要做的事情
  5. andorid 自定义seekbar
  6. Android代码实现APK文件的安装与卸载
  7. Android(安卓)使用netty框架实现socket通信
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. Android属性动画应用超简单代码打造酷炫
  2. Android ADK开发包示例开源代码
  3. Linux/Android——输入子系统input_event
  4. android 获取 内外存储设备路径疑问
  5. 19、从头学Android之Android的数据存储--
  6. 如何适应android碎片化的屏幕
  7. android string.setSpan
  8. Android(安卓)Launcher抽屉类SlidingDraw
  9. Java之IO流操作
  10. 如何实现Android桌面小部件(二)