如何使用 FolderOverlay 创建新的 Overlay - OSMDroid

How to create a new Overlay using FolderOverlay - OSMDroid

大家下午好,如何为我从文件中读取的每个点在我的地图上创建或插入一个新叠加层? 为了阅读这些要点,我创建了一个实现 FolderOverlay 的 class。在我的项目代码下面:.

GeoOverlay.java - 从 geojson 文件中读取点的位置

MainActivity.java - 在哪里创建 class GeoOverlay.java

的对象
public class MainActivity extends AppCompatActivity {
    private GeoOverlay overlay;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MapView map = (MapView) findViewById(R.id.map);
        map.setBuiltInZoomControls(true);
        map.setMultiTouchControls(true);
        try {
            InputStream is = getApplicationContext().getResources().getAssets().open("map.geojson");
            overlay = new GeoOverlay(is);
            overlay.getMyPositionList();
            Marker marker = new Marker(map);
            IMapController mapController = map.getController();
            for(int i =0 ; i<overlay.getMyPositionList().size();i++)
            {
                marker.setPosition(overlay.getMyPositionList().get(i));
                map.getOverlays().add(marker);
                map.invalidate();
            }
            mapController.setCenter(overlay.getMyPositionList().get(0));
            Log.d("OVERLAY","PROVAO AD INSERIRE OVERLAY \n");
        }catch (IOException e)
        {
            e.printStackTrace();
            System.out.print("*--- ERRORE APERTURA FILE ---*\n");
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

您根本不使用 GeoOverlay class 作为叠加层,因此您可能不需要它来扩展 FolderOverlay。

您代码中的主要问题是,您正在创建一个 Marker 实例,而您只是更改它的位置。

您应该为列表中的每个位置创建新标记。

 IMapController mapController = map.getController();
 for(int i =0 ; i<overlay.getMyPositionList().size();i++)
 {
     Marker marker = new Marker(map);
     marker.setPosition(overlay.getMyPositionList().get(i));
     map.getOverlays().add(marker);
 }
 mapController.setCenter(overlay.getMyPositionList().get(0));
 map.invalidate();