Я использую OSMdroid с автономными MBTiles. Мне нужно, чтобы пользователи могли выбирать несколько MBtiles из ListView
. ListView
Окна легко. Тем не менее, мне нужна помощь в загрузке различных загрузок MBtiles на основе MBtiles, выбранных из ListView
. Мои MBTiles загружаются из SDCard.OSMdroid Загрузка нескольких автономных MBTIles через ListView
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;
import android.app.Activity;
import android.os.Bundle;
import android.widget.RelativeLayout;
public class OfflineMapDemoActivity extends Activity {
private String MapName;
public String getMapName(){
return MapName;
}
public void setMapName(String s){
MapName = s;
}
// layout
private RelativeLayout mapLayout;
// MapView
private MapView mapView;
private MapController mapController;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// init Layout
setContentView(R.layout.main);
this.mapLayout = (RelativeLayout) findViewById(R.id.mapLayout);
// init Offline Map
MapName="World.sqlitedb";
this.mapView = new OfflineMapView(this, MapName);
this.mapController = mapView.getController();
// set Zoom Countrol
this.mapView.setBuiltInZoomControls(true);
// set Touch Control
this.mapView.setMultiTouchControls(true);
// zoom to 15
this.mapController.setZoom(15);
//add mapview
this.mapLayout.addView(this.mapView, new RelativeLayout.LayoutParams(
android.view.ViewGroup.LayoutParams.FILL_PARENT,
android.view.ViewGroup.LayoutParams.FILL_PARENT));
// scroll to 24082456, 120558472
GeoPoint geoPoint = new GeoPoint(24082456, 120558472);
this.mapController.setCenter(geoPoint);
}
}
создать глобальную переменную строку для хранения MapName
где Listview
класс можно установить с помощью открытого метода setMapName()
.
Кстати, есть ли способ читать центр MBTiles автоматически вместо жесткого кодирования?
// scroll to 24082456, 120558472
GeoPoint geoPoint = new GeoPoint(24082456, 120558472);
this.mapController.setCenter(geoPoint);
Какой метод следует использовать ключи пользователя каждый раз на OSMdroid
карте от ListView
, чтобы загрузить выбранный в оффлайн MBtiles карту из просмотра списка? Выше метода Create только загружают карту MBTiles один раз при загрузке в первый раз? Вот код просмотра списка.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.SimpleAdapter;
public class MyTwoListItemsActivity extends ListActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<Map<String, String>> list = buildData();
String[] from = { "mapname", "selected" };
int[] to = { android.R.id.text1, android.R.id.text2 };
SimpleAdapter adapter = new SimpleAdapter(this, list,
android.R.layout.simple_list_item_2, from, to);
setListAdapter(adapter);
}
private ArrayList<Map<String, String>> buildData() {
ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();
list.add(putData("Map1", "Map1"));
list.add(putData("Map2", "Map2"));
list.add(putData("Map3", "Map3"));
return list;
}
private HashMap<String, String> putData(String name, String purpose) {
HashMap<String, String> item = new HashMap<String, String>();
item.put("mapname", mapname);
item.put("selected", selected);
return item;
}
}
Как я могу интегрировать переключение между MyTwoListItemsActivity
и OfflineMapDemoActivity
?
Вы можете поделиться своим кодом, который используется для поддержки нескольких MBTiles? Очень признателен. – user914425
обновлен с кодом. Этот код не требует модификаций osm помимо двух связанных проблем. – spy
ссылка на проблему osmdroid https://github.com/osmdroid/osmdroid/issues/140 – spy