gpt4 book ai didi

java - 如何使用FolderOverlay创建新的叠加层 - OSMDroid

转载 作者:行者123 更新时间:2023-12-02 11:52:15 31 4
gpt4 key购买 nike

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

最佳答案

您根本不使用 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();

关于java - 如何使用FolderOverlay创建新的叠加层 - OSMDroid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47813238/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com