这应该很简单,但我似乎找不到如何做。
在Flutter / openstreetmap中,我需要:(1)通过点击地图和/或点击按钮在地图上放置一个标记;(2)用一条线连接这些标记中的两个。
任何想法都将不胜感激。
这应该很简单,但我似乎找不到如何做。
在Flutter / openstreetmap中,我需要:(1)通过点击地图和/或点击按钮在地图上放置一个标记;(2)用一条线连接这些标记中的两个。
任何想法都将不胜感激。
1)添加标记:
List<Marker> markers = [];
在 Build 方法内部:
FlutterMap(
mapController: _mapController,
options: MapOptions(
center: LatLng(41.238250, 69.342939),
zoom: 9.6,
onTap: (latlng) {
setState(() {
markers.add(
Marker(
width: 150.0,
height: 150.0,
point: latlng,
builder: (ctx) => const Icon(
Icons.location_on,
color: Colors.red,
size: 35.0,
),
),
);
});
}),
layers: [
MarkerLayerOptions(
markers: [
for (int i = 0; i < markers.length; i++) markers[i]
],
),
],
),
2)如果您想在两个点之间获取方向,则可以使用此服务,它是免费的。http://project-osrm.org
我正在使用的链接是用于获取两点之间的方向。
它需要API密钥和起点纬度-经度和终点纬度-经度。
响应会给出多个纬度-经度点,如果您将这些点提供给地图的polyLine参数,它将在两个点之间画出一条道路线。
如果您需要澄清我的回答的某个部分,请告诉我
FlutterMap(
options: MapOptions(
center: LatLng(50, 50),
onTap: (tapPos, latlng) {
setState(() {
markers.add(
Marker(
width: 100.0,
height: 100.0,
point: latlng,
builder: (ctx) => const Icon(
Icons.location_on,
color: Colors.red,
size: 35.0,
),
),
);
});
},
),
children: [
TileLayer(
urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
userAgentPackageName: 'com.example.app',
),
MarkerLayer(
markers: [for (int i = 0; i < markers.length; i++) markers[i]],
)
],
),