Я установил свой код, чтобы, когда пользователь переходит к фрагменту карты, он отображал карту со всеми маркерами в базе данных. У меня есть два фиктивных маркера, и они работают, но те из моей базы данных не отображаются.
Я убедился, что SQL-запрос правильный, и попытался добавить статические маркеры, но динамические не отображаются.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.map,container,false);
mapView = (MapView) rootView.findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
Log.i("DEBUG", "onMapReady");
map = googleMap;
LatLng sydney = new LatLng(-34, 151);
LatLng paris = new LatLng(12,-40);
map.addMarker(new
MarkerOptions().position(sydney).title("Marker in Sydney"));
map.addMarker(new
MarkerOptions().position(paris).title("Marker in Ocean"));
try {
String sql = "SELECT
marker.markerLat,marker.markerLon,marker.markerDate
FROM marker LEFT JOIN tripMarker ON" +
" marker.markerID = tripMarker.markerID LEFT
JOIN userTrip ON userTrip.tripID =
tripMarker.tripID " +
"WHERE userTrip.userID = '" + User.UserLoggedOn
+ "';";
Cursor cursor = db.rawQuery(sql, null);
if ( cursor.moveToFirst() ) {
while (cursor.moveToNext()) {
double lat =
cursor.getDouble(cursor.getColumnIndex("markerLat"));
System.out.println(lat);
double lon =
cursor.getDouble(cursor.getColumnIndex("markerLon"));
System.out.println(lon);
LatLng latLng = new LatLng(lat, lon);
MarkerOptions markerOptions = new
MarkerOptions();
markerOptions.position(latLng);
map.addMarker(markerOptions.title(cursor.getString(
cursor.getColumnIndex("markerDate"))));
}
}
}catch (Exception e){
e.printStackTrace();
}
}
});
return rootView;
}
Вот мой фрагмент XML
<com.google.android.gms.maps.MapView
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
class="com.google.android.gms.maps.SupportMapFragment" />