Java 如何使用FolderOverlay-OSMDroid创建新的覆盖
大家下午好,如何为我从文件中读取的每个点在我的地图上创建或插入新的覆盖? 为了读取这些点,我创建了一个实现FolderOverlay的类。下面是我的项目的代码: GeoOverlay.java-其中读取geojson文件中的点 MainActivity.java-其中创建GeoOverlay.java类的对象Java 如何使用FolderOverlay-OSMDroid创建新的覆盖,java,android,osmdroid,Java,Android,Osmdroid,大家下午好,如何为我从文件中读取的每个点在我的地图上创建或插入新的覆盖? 为了读取这些点,我创建了一个实现FolderOverlay的类。下面是我的项目的代码: GeoOverlay.java-其中读取geojson文件中的点 MainActivity.java-其中创建GeoOverlay.java类的对象 public class MainActivity extends AppCompatActivity { private GeoOverlay overlay; @Ove
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();
}
}
}
public类MainActivity扩展了AppCompatActivity{
私有地理覆盖;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MapView地图=(MapView)findViewById(R.id.map);
map.setBuiltInZoomControls(真);
map.setMultiTouchControls(真);
试一试{
InputStream is=getApplicationContext().getResources().getAssets().open(“map.geojson”);
覆盖层=新的地理覆盖层(is);
overlay.getMyPositionList();
标记=新标记(地图);
IMapController mapController=map.getController();
对于(inti=0;i您根本不使用GeoOverlay类作为覆盖,因此您可能不需要它来扩展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();
IMapController-mapController=map.getController();
对于(int i=0;我将来到StackOverflow。FolderOverlay充当其他覆盖的容器。因此,正确的答案可能是:“不,不是”。也许可以尝试重新表述您的问题,以便我们知道您真正想做什么。此外,请花些时间了解您在这里的方式(以及赢得您的第一个徽章),阅读“如何”并进行检查,以增加获得反馈和有用答案的机会。您好,谢谢您的回复,我已重新制定了问题。