Flutter 从我的数据库中添加多少谷歌地图标记?
我有laravel API LAT和LNG,我想在地图上显示所有标记。我试着打个圈把它染成红色,但只显示了一个标记。我怎样才能解决这个问题Flutter 从我的数据库中添加多少谷歌地图标记?,flutter,dart,Flutter,Dart,我有laravel API LAT和LNG,我想在地图上显示所有标记。我试着打个圈把它染成红色,但只显示了一个标记。我怎样才能解决这个问题 var lat ; var lng ; var mylist ; Future<List<Post>> getData() async { // start get post http.Response response = await http.get( " mysite.c
var lat ;
var lng ;
var mylist ;
Future<List<Post>> getData() async {
// start get post
http.Response response = await http.get(
" mysite.com/api/getall",
headers: {"Accept": "application/json"},);
List collection = json.decode(response.body);
mylist = collection.map((json) => Post.fromJson(json)).toList();
for(var i in mylist){
lat = i.lat ;
lng = i.lng ;
}
} // end getData
///////////////////////////
FlutterMap(
options: new MapOptions(
center: new LatLng(lat, lng),
zoom: 12.0,
),
layers: [
new TileLayerOptions(
urlTemplate:
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
subdomains: ['a', 'b', 'c']),
new MarkerLayerOptions(markers: [
new Marker(
width: 45.0,
height: 45.0,
point: new LatLng(lat, lng),
builder: (context) => new Container(
child: IconButton(
icon: Icon(Icons.location_on),
color: Colors.red,
iconSize: 45.0,
onPressed: () {
print('Marker tapped');
},
),
var lat;
乏液化天然气;
var mylist;
Future getData()异步{
//开始发帖
http.Response-Response=等待http.get(
“mysite.com/api/getall”,
标题:{“Accept”:“application/json”},);
List collection=json.decode(response.body);
mylist=collection.map((json)=>Post.fromJson(json)).toList();
对于(mylist中的var i){
lat=i.lat;
液化天然气=液化天然气;
}
}//结束getData
///////////////////////////
地图(
选项:新地图选项(
中心:新LatLng(lat,lng),
缩放:12.0,
),
图层:[
新TileLayerOptions(
URL模板:
“https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png”,
子域:['a','b','c']),
新的MarkerLayerProptions(标记:[
新标记(
宽度:45.0,
身高:45.0,
要点:新LatLng(lat,lng),
生成器:(上下文)=>新容器(
孩子:我的钮扣(
图标:图标(图标位置打开),
颜色:颜色,红色,
iconSize:45.0,
已按下:(){
打印(‘标记轻敲’);
},
),
在MarkerLayerOptions
中,您实际上可以传递一个标记列表。目前,列表中只有一个标记,因此您只能看到一个标记
因此,您基本上可以这样做(未经测试,您可能需要稍微调整语法…)
var-mylist;
列出myMarkers=[];
Future getData()异步{
//开始发帖
http.Response-Response=等待http.get(
“mysite.com/api/getall”,
标题:{“Accept”:“application/json”},);
List collection=json.decode(response.body);
mylist=collection.map((json)=>Post.fromJson(json)).toList();
对于(mylist中的var i){
lat=i.lat;
液化天然气=液化天然气;
var nextMarker=新标记(
宽度:45.0,
身高:45.0,
要点:新LatLng(lat,lng),
生成器:(上下文)=>新容器(
孩子:我的钮扣(
图标:图标(图标位置打开),
颜色:颜色,红色,
iconSize:45.0,
已按下:(){
打印(‘标记轻敲’);
},
),
);
myMarkers.add(nextMarker);
}
}//结束getData
///////////////////////////
地图(
选项:新地图选项(
中心:新LatLng(lat,lng),
缩放:12.0,
),
图层:[
新TileLayerOptions(
URL模板:
“https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png”,
子域:['a','b','c']),
新的MarkerLayerProptions(标记:myMarkers),
])
如上所述,不要期望代码开箱即用,这里只是为了说明总体思路。您也需要在循环中创建标记。目前您只添加一个标记。错误…“类型“List”不是类型“List”的子类型”正如我所说,我没有测试代码…我将相应地更新我的答案。谢谢..frankenapps..感谢您的帮助和时间:)
var mylist ;
List myMarkers = [];
Future<List<Post>> getData() async {
// start get post
http.Response response = await http.get(
" mysite.com/api/getall",
headers: {"Accept": "application/json"},);
List collection = json.decode(response.body);
mylist = collection.map((json) => Post.fromJson(json)).toList();
for(var i in mylist){
lat = i.lat ;
lng = i.lng ;
var nextMarker = new Marker(
width: 45.0,
height: 45.0,
point: new LatLng(lat, lng),
builder: (context) => new Container(
child: IconButton(
icon: Icon(Icons.location_on),
color: Colors.red,
iconSize: 45.0,
onPressed: () {
print('Marker tapped');
},
),
);
myMarkers.add(nextMarker);
}
} // end getData
///////////////////////////
FlutterMap(
options: new MapOptions(
center: new LatLng(lat, lng),
zoom: 12.0,
),
layers: [
new TileLayerOptions(
urlTemplate:
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
subdomains: ['a', 'b', 'c']),
new MarkerLayerOptions(markers: myMarkers),
])