如何使用 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();
大家下午好,如何为我从文件中读取的每个点在我的地图上创建或插入一个新叠加层? 为了阅读这些要点,我创建了一个实现 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();