Как создать область многоугольника в mapbox - PullRequest
0 голосов
/ 05 сентября 2018

Я создал приложение для Android, используя mapbox; новое, я хочу нарисовать область многоугольника пользователем и показать на карте;

Как я могу сделать это в mapbox? mapbox.com

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

API mapbox предоставляет функциональные возможности для обработки кликов на карте. MapboxMap.setOnMapClickListener(OnMapClickListener) (https://www.mapbox.com/android-docs/api/map-sdk/6.4.0/) который даст вам местоположение.

Я предлагаю вам использовать эти местоположения для постепенного создания ломаной линии, и после того, как пользователь закончит многоугольник, затем преобразуйте ломаную линию в многоугольник, закрыв форму.

Примеры взаимодействия с пользователем: https://www.mapbox.com/android-docs/maps/examples/#user-interaction

0 голосов
/ 05 сентября 2018

Я думаю, вы могли бы использовать эту функцию:

Активность

private MapView mapView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Mapbox access token is configured here. This needs to be called either in your application
    // object or in the same activity which contains the mapview.
    Mapbox.getInstance(this, getString(R.string.mapbox_token));

    // This contains the MapView in XML and needs to be called after the access token is configured.
    setContentView(R.layout.main_activity);

    mapView = (MapView) findViewById(R.id.mapView);
    mapView.onCreate(savedInstanceState);
    mapView.getMapAsync(new OnMapReadyCallback() {
      @Override
      public void onMapReady(MapboxMap mapboxMap) {
        drawPolygon(mapboxMap);
      }
    });
  }

Функция drawPolygon:

 private void drawPolygon(MapboxMap mapboxMap) {
    List<LatLng> polygon = new ArrayList<>();
    polygon.add(new LatLng(45.522585, -122.685699));
    polygon.add(new LatLng(45.534611, -122.708873));
    polygon.add(new LatLng(45.530883, -122.678833));
    polygon.add(new LatLng(45.547115, -122.667503));
    polygon.add(new LatLng(45.530643, -122.660121));
    polygon.add(new LatLng(45.533529, -122.636260));
    polygon.add(new LatLng(45.521743, -122.659091));
    polygon.add(new LatLng(45.510677, -122.648792));
    polygon.add(new LatLng(45.515008, -122.664070));
    polygon.add(new LatLng(45.502496, -122.669048));
    polygon.add(new LatLng(45.515369, -122.678489));
    polygon.add(new LatLng(45.506346, -122.702007));
    polygon.add(new LatLng(45.522585, -122.685699));
    mapboxMap.addPolygon(new PolygonOptions()
      .addAll(polygon)
      .fillColor(Color.parseColor("#CD0000")));
  }

Надеюсь, это поможет вам.

...