#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. Хорошо, что это может сделать работу! Есть идеи, как их использовать?