2016-04-04 8 views
1

На эту тему, похоже, есть ряд похожих вопросов, но они либо используют другой язык программирования (я программирую на Java), либо не отвечаю на мой вопрос.Чтение из базы данных на Картах Google

Я использую Android Studio для создания приложения Google Maps. Я хотел бы создать маркеры на карте, читая значения из базы данных. Эти значения будут обозначать широту и долготу маркера (т. Е. Точное местоположение маркера).

Я создал базу данных и добавил в нее значения (я думаю, что я сделал это правильно - я следил за множеством онлайн-уроков). У меня также успешно работает карта Google. Но я зациклился на том, как заставить карту читать значения широты и долготы из базы данных, чтобы она могла генерировать маркеры в этих соответствующих местах.

В Android Studio у меня есть GoogleMapsActivity. У меня есть несколько классов java для базы данных. У меня есть AndroidManifest.xml и google_maps_api.xml. Это все в одном пакете (если эта информация помогает).

Любые идеи о том, как это сделать?

ответ

1

К сожалению, в этом вопросе недостаточно информации, чтобы иметь возможность предоставить полное решение. Вы не указали, какую базу данных вы используете, формат данных или с чем именно вы столкнулись.

Я собираюсь предположить, что вы можете запросить данные из базы данных и настроить GoogleMap. Я покажу вам, как использовать эти значения для добавления маркеров на вашу карту. В вашем GoogleMapsActivity вы должны иметь метод onMapReady. Вы можете использовать, чтобы добавить маркеры следующим образом:

public void onMapReady(GoogleMap map) { 
    MapsInitializer.initialize(mMapView.getContext()); 
    for (CustomLocation location : getLocations()) { 
      LatLng latLng = new LatLng(location.lat, location.lng); 
      map.addMarker(new MarkerOptions().position(latLng)); 
    } 
} 

public List<CustomLocation> getLocations() { 
    // here you read from your database to get your CustomLocation object 
    // containing latitude and longitude 
} 

Примечания, в зависимости от используемой базы данных и количества данных, которые вы запрашиваете, вы можете позвонить getLocations() в фоновом потоке и обработать результат в потоке пользовательского интерфейса. Если вы используете что-то вроде Realm, и вы не запрашиваете большой набор данных, тогда может быть в порядке, чтобы сохранить его в потоке пользовательского интерфейса.

Смежные вопросы