基于谷歌离线地图的android stdio 开发,写入起点和终点,可以完成线路的规划,并且能显示目前定位的代码码源
时间: 2023-12-20 09:05:24 浏览: 114
以下是基于谷歌离线地图的Android Studio开发,实现起点和终点线路规划,并能显示目前定位的代码源:
1. 首先需要在build.gradle文件中添加以下依赖:
```
implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'
```
2. 在布局文件中添加一个MapView控件,用于显示地图:
```
<com.google.android.gms.maps.MapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
```
3. 在Activity中初始化MapView,并获取GoogleMap对象,用于进行地图相关操作:
```
public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {
private MapView mMapView;
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
mMapView = findViewById(R.id.map_view);
mMapView.onCreate(savedInstanceState);
mMapView.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// 进行地图相关操作
}
}
```
4. 在Activity中添加起点和终点Marker,并绘制线路:
```
LatLng startPoint = new LatLng(39.9087, 116.3975); // 起点坐标
LatLng endPoint = new LatLng(39.9904, 116.4817); // 终点坐标
MarkerOptions startMarkerOptions = new MarkerOptions()
.position(startPoint)
.title("起点")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
mMap.addMarker(startMarkerOptions);
MarkerOptions endMarkerOptions = new MarkerOptions()
.position(endPoint)
.title("终点")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
mMap.addMarker(endMarkerOptions);
PolylineOptions polylineOptions = new PolylineOptions()
.add(startPoint, endPoint)
.width(5)
.color(Color.BLUE);
mMap.addPolyline(polylineOptions);
```
5. 获取当前位置,并显示Marker:
```
private FusedLocationProviderClient mFusedLocationClient;
private Location mLastLocation;
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mFusedLocationClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
mLastLocation = location;
LatLng currentLocation = new LatLng(location.getLatitude(), location.getLongitude());
MarkerOptions markerOptions = new MarkerOptions()
.position(currentLocation)
.title("当前位置")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.current_location));
mMap.addMarker(markerOptions);
}
}
});
}
```
6. 在AndroidManifest.xml文件中添加权限:
```
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
```
以上就是基于谷歌离线地图的Android Studio开发,实现起点和终点线路规划,并能显示目前定位的代码源。