我想表明在OSM地圖GeoJSON的對象,併爲此我使用osmdroid(5.4版本)和(版本5.8)庫。我的活動是:從以GeoJSON使用GeoJSON的Android的OSM地圖很慢
public class TempMapActivity extends Activity {
MapView map;
KmlDocument mKmlGeoJson;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
initMap();
}
private void initMap() {
map = (MapView) findViewById(R.id.map);
map.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);
map.setBuiltInZoomControls(true);
map.setMultiTouchControls(true);
IMapController mapController = map.getController();
map.setMinZoomLevel(18);
map.setMaxZoomLevel(22);
map.getController().setCenter(new GeoPoint(2.9691, 101.7146));
mapController.setZoom(18);
setupGeoJson();
}
private void setupGeoJson() {
String gJson = null;
try {
gJson = getGeoString();
} catch (IOException e) {
e.printStackTrace();
}
mKmlGeoJson = new KmlDocument();
mKmlGeoJson.parseGeoJSON(gJson);
FolderOverlay myOverLay = (FolderOverlay) mKmlGeoJson.mKmlRoot.
buildOverlay(map, null, null, mKmlGeoJson);
map.getOverlays().add(myOverLay);
map.getController().setZoom(16);
map.getController().setCenter(new GeoPoint(2.9691, 101.7146));
map.invalidate();
}
private String getGeoString() throws IOException {
InputStream is = getResources().openRawResource(R.raw.json_template);
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try {
Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
is.close();
}
String jsonString = writer.toString();
return jsonString;
}
}
對象正在顯示,但縮小/中(當負載)時,地圖是工作非常緩慢。當我關掉加載GeoJSON的,地圖是工作的罰款。我不知道我在做什麼錯。
我的GeoJson文件不是很大(大約100個功能項目)。該應用程序在物理設備上運行。如果我嘗試從Github以你在我的項目中加載的方式加載你的OSMBonusPackTuto或OSMNavigator項目中的GeoJson文件,map工作正常。但在我的項目地圖中非常緩慢。然後我想,也許這是由於包名和bonuspack以及爲了測試我使用applicationId(包名稱)「com.example.osmbonuspacktuto」創建了新項目,並且我想知道即使加載GeoJson文件時地圖工作也很快。 –