我已经设置了代码,因此当用户移至地图片段时,它将显示一个包含数据库中所有标记的地图。我有两个虚拟标记,它们可以工作,但是我数据库中的两个虚拟标记不显示。
我确保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" />
答案 0 :(得分:3)
您应该跳过第一行吗?是唯一会返回的行吗?
也许是注释中记录不起作用的原因:-
由于某种原因,我将日志放入了if语句和 抓住,但我似乎找不到它们。这是否意味着他们都不 触发?
也许您应该尝试使用以下方法(删除class Genre(models.Model):
name = models.CharField(max_length=200, help_text='Enter a book genre (e.g. Science Fiction)')
class Book(models.Model):
genre = models.ManyToManyField(Genre, help_text='Select a genre for this book')
会跳过第一行):-
if (csr.moveToFirst())
我还会将代码包装在try / catch子句中,这很可能隐藏了问题。