mapbox for android教程
时间: 2023-12-06 08:37:05 浏览: 55
以下是mapbox for android的教程:
1. 安装Mapbox SDK
在项目的build.gradle文件中添加以下依赖项:
```gradle
implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.6.1'
```
2. 在布局文件中添加MapView
```xml
<com.mapbox.mapboxsdk.maps.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
mapbox:mapbox_cameraTargetLat="40.73581"
mapbox:mapbox_cameraTargetLng="-73.99155"
mapbox:mapbox_cameraZoom="11"/>
```
3. 在Activity中初始化MapView
```java
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
private MapView mapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Mapbox.getInstance(this, "YOUR_MAPBOX_ACCESS_TOKEN");
setContentView(R.layout.activity_main);
mapView = findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(this);
}
@Override
public void onMapReady(@NonNull MapboxMap mapboxMap) {
// 在这里可以对地图进行操作
}
@Override
protected void onStart() {
super.onStart();
mapView.onStart();
}
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
@Override
protected void onStop() {
super.onStop();
mapView.onStop();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mapView.onRestoreInstanceState(savedInstanceState);
}
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
}
```
4. 在Activity中对地图进行操作
```java
// 获取地图对象
MapboxMap mapboxMap = mapView.getMapAsync(this);
// 移动地图到指定位置
CameraPosition position = new CameraPosition.Builder()
.target(new LatLng(40.73581, -73.99155))
.zoom(11)
.build();
mapboxMap.animateCamera(CameraUpdateFactory.newCameraPosition(position), 1000);
// 添加标记
MarkerOptions markerOptions = new MarkerOptions()
.position(new LatLng(40.73581, -73.99155))
.title("Marker Title")
.snippet("Marker Description");
mapboxMap.addMarker(markerOptions);
// 添加线
List<LatLng> points = new ArrayList<>();
points.add(new LatLng(40.73581, -73.99155));
points.add(new LatLng(40.748817, -73.985428));
LineOptions lineOptions = new LineOptions()
.addAll(points)
.color(Color.parseColor("#3bb2d0"))
.width(2);
mapboxMap.addPolyline(lineOptions);
// 添加面
List<LatLng> polygonPoints = new ArrayList<>();
polygonPoints.add(new LatLng(40.73581, -73.99155));
polygonPoints.add(new LatLng(40.748817, -73.985428));
polygonPoints.add(new LatLng(40.718217, -73.998284));
polygonPoints.add(new LatLng(40.73581, -73.99155));
FillOptions fillOptions = new FillOptions()
.addAll(polygonPoints)
.alpha(0.4f)
.fillColor(Color.parseColor("#3bb2d0"));
mapboxMap.addPolygon(fillOptions);
```