Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 从我的数据库中添加多少谷歌地图标记?_Flutter_Dart - Fatal编程技术网

Flutter 从我的数据库中添加多少谷歌地图标记?

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

我有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.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),
                    ])