Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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
Java 如何使用FolderOverlay-OSMDroid创建新的覆盖_Java_Android_Osmdroid - Fatal编程技术网

Java 如何使用FolderOverlay-OSMDroid创建新的覆盖

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

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

GeoOverlay.java-其中读取geojson文件中的点

MainActivity.java-其中创建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();
        }
    }
}
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充当其他覆盖的容器。因此,正确的答案可能是:“不,不是”。也许可以尝试重新表述您的问题,以便我们知道您真正想做什么。此外,请花些时间了解您在这里的方式(以及赢得您的第一个徽章),阅读“如何”并进行检查,以增加获得反馈和有用答案的机会。您好,谢谢您的回复,我已重新制定了问题。