Добавьте слой / плитку на карту

#flutter #mapbox #layer

#flutter #mapbox #слой

Вопрос:

Я работаю над проектом в Flutter с Mapbox и ищу способ импортировать слой или плитки на свою карту, например, этот пример (в JS): https://docs.mapbox.com/mapbox-gl-js/example/adjust-layer-opacity /

Пока я могу отображать карту :

 import 'package:mapbox_gl/mapbox_gl.dart';

class MapsDemo extends StatelessWidget {

  static const String ACCESS_TOKEN = "...";
  MapboxMapController mapController;

  static const LatLng SOURCE_LOCATION = LatLng(0.0, 0.0);

  void _onMapCreated(MapboxMapController controller) {
    mapController = controller;
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        body: MapboxMap(
      accessToken: MapsDemo.ACCESS_TOKEN,
      onMapCreated: _onMapCreated,
      initialCameraPosition: const CameraPosition(target: SOURCE_LOCATION),
    ));
  }
}

void main() {
  runApp(MaterialApp(home: MapsDemo()));
}
  

Итак, вот мой полный вопрос :
Есть ли способ получить квадратный (или прямоугольный) слой / плитку x * x для заданной позиции и отобразить его на карте в правильных координатах?

Спасибо!

Ответ №1:

Лучший способ сделать это — использовать flutter_map, как рекомендует Akif: https://pub.dev/packages/flutter_map
https://github.com/fleaflet/flutter_map

В их примере страница «overlay_image» идеально соответствует моим требованиям.

Ответ №2:

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

https://pub.dev/packages/flutter_map

РЕДАКТИРОВАТЬ: в MapboxMapController есть два метода. Вы можете их использовать.

 Future<List> queryRenderedFeatures(
     Point<double> point, List<String> layerIds, List<Object> filter) async {
   return MapboxGlPlatform.getInstance(_id)
       .queryRenderedFeatures(point, layerIds, filter);
 }

 Future<List> queryRenderedFeaturesInRect(
     Rect rect, List<String> layerIds, String filter) async {
   return MapboxGlPlatform.getInstance(_id)
       .queryRenderedFeaturesInRect(rect, layerIds, filter);
 }
  

Комментарии:

1. Хорошо, что это может сделать работу! Есть идеи, как их использовать?