【问题标题】:flutter app crashed when adding multi thousands points to Polygon向多边形添加数千点时,颤振应用程序崩溃
【发布时间】:2022-06-16 14:35:28
【问题描述】:

我使用nominatim OpenStreetMap API接收伦敦城市的坐标并尝试绘制伦敦城市的多边形,但是当我使用此代码时导致点数太多

       try {
                          await state.getLocationPolygonByAddress(
                              state.foundedAddress[index].address);
                          var foundedSvg = state.foundedSvg;
                          List<LatLng> list = [];
                          setState(() {
                            testPolygon.points.clear();
                          });

                          for (int i = 0; i < foundedSvg.length; i++) {
                            for (int j = 0; j <
                                foundedSvg[i].geojson.coordinates
                                    .length; j++) {
                              for (int k =0;k<foundedSvg[i].geojson.coordinates[j].length;k++) 
                               {

                                for (int z = 0; z <
                                    foundedSvg[i].geojson.coordinates[j][k]
                                        .length; z++) {

                                 /* if(foundedSvg[i].geojson
                                      .coordinates[j][k].first is double  && 
                                      foundedSvg[i].geojson
                                      .coordinates[j][k].last is double) {*/
                                    list.add(LatLng(foundedSvg[i].geojson
                                        .coordinates[j][k].first,
                                        foundedSvg[i].geojson
                                            .coordinates[j][k].last));
                               /*   }
                                  else{
                                    print(k);
                                  }*/

                                }
                              }
                            }
                          }
                          print(list.length);

                         state.clearfoundedAddress();






                          setState(() {
                           testPolygon.points.addAll(list);

                          });
                          print('polyeditor length: ${polyEditor.points.length}');

                        }catch(e){
                          print('error :'+e.toString());
                        }

当尝试将点列表添加到此行中的多边形时

testPolygon.points.addAll(list);

应用程序崩溃了。 但如果点数很少,效果很好。

这是我的 FlutterMap 层

  FlutterMap(
          mapController: controller,

          options: MapOptions(


            allowPanningOnScrollingParent: false,


              onTap: (_, ll) {
              print(ll);

              polyEditor.add(testPolygon.points, ll);

            },
            plugins: [
              DragMarkerPlugin(),
            ],
            center: LatLng(32.5231, 51.6765),
            zoom: 4.0,

          ),
          layers: [
            TileLayerOptions(
                urlTemplate:
                    'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
                subdomains: ['a', 'b', 'c']),
            PolygonLayerOptions(polygons: polygons,polygonCulling: true),
           DragMarkerPluginOptions(markers: polyEditor.edit(),),
          ],
        ),

结果应该是这样的 result picture

【问题讨论】:

  • 可以分享崩溃日志吗?

标签: flutter dart polygon fluttermap


猜你喜欢
  • 2022-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 2018-05-15
  • 2019-05-14
  • 2020-11-16
  • 1970-01-01
相关资源
最近更新 更多