Java 从SQLite数据库中读取Google地图标记的值
我正在尝试从预先制作的SQLite数据库中读取位置(纬度、经度)值和标题。我遇到的问题是,它似乎在地图上显示了一个标记,但与数据库中的值无关——几乎就像它们被错误地读取一样 我的MonumentsDatabase.java类(我在其中处理数据库):Java 从SQLite数据库中读取Google地图标记的值,java,android,database,sqlite,Java,Android,Database,Sqlite,我正在尝试从预先制作的SQLite数据库中读取位置(纬度、经度)值和标题。我遇到的问题是,它似乎在地图上显示了一个标记,但与数据库中的值无关——几乎就像它们被错误地读取一样 我的MonumentsDatabase.java类(我在其中处理数据库): 也许我遗漏了什么,但是看起来你的getLat()方法实际上并没有在任何地方设置_lat的值(它返回的值)?对于getLong()等类似 如果这不是问题所在,您是否尝试过调试和单步执行代码?这将使您更好地了解达夫值的来源 抱歉,我本想添加此作为评论,但
也许我遗漏了什么,但是看起来你的getLat()方法实际上并没有在任何地方设置_lat的值(它返回的值)?对于getLong()等类似 如果这不是问题所在,您是否尝试过调试和单步执行代码?这将使您更好地了解达夫值的来源
抱歉,我本想添加此作为评论,但没有足够的代表。将数据元组(lat、lng、描述等)分开的原因是什么?我把它放在一个有3列的表中(为了简洁起见,删去其余部分):
在这种情况下,您永远不会得到像
11,11;22.22; 位置B,显然在您的案例中发生了什么,纬度和经度没有被检索,因为方法getLat()
和getLng()
从光标检索它是错误的
因为您只从数据库中选择了一列,所以必须获取列索引0,而不是像在getLat()
和getLng()
方法中那样获取1或2
在这些方法中,执行以下操作:
// getLat() method
_lat = latQuery.getDouble(0);
// getLng() method
_lng = lngQuery.getDouble(0);
请您记录sLat和sLng的值,并将其作为更新发布到您的帖子中,以便我们查看这些值是否被正确检索。当然!它用输出进行了更新:)我只能看到纬度,请将它粘贴到mDB.get(I).getLng()
行:Log.I(“主活动”,“纬度和经度”+sLat+“-”+sLng)之后
并发布新日志。抱歉,我不知道它没有连接,现在一切都结束了!:)添加这个Log.i(“MainActivity”,“纬度和经度:“+sLat+”-“+sLng+”-标题:“+mDB.get(i).getTitle())代码>在mDB.get(i).getLng()
之后,因此我们可能会以正确的顺序查看值,然后请发布更新。我现在来看看,我已经通过日志发送了数据库,它打印得很好,所以可能这就是原因!
public class MainActivity extends FragmentActivity {
private GoogleMap map;
Intent data;
MonumentsDatabase monDatabase;
ArrayList<MonumentsDatabase> mDatabase;
int _id;
double _lat;
double _lng;
double sLat;
double sLng;
String _title;
String titles;
double lats;
double lngs;
LatLng markerPosition;
int i;
private Marker bigBen;
private Marker mainMarker;
private Marker parliamentSQ;
private Marker parliament;
private Marker random;
static final LatLng PARLIAMENT = new LatLng(51.499776600000000000, -0.125173099999983600);
//static final LatLng MARKERS = new LatLng(getLatitude(), getLongitude());
static final LatLng PARLIAMENTSQ = new LatLng(51.5006, -0.1267);
static final LatLng RANDOM = new LatLng(51.5019, -0.1257);
LocationManager locationManager;
Context context = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
map=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Intent data = new Intent(MainActivity.this, DisplayData.class);
startActivity(data);
}
});
ArrayList<MonumentsDatabase> mDB = createDatabase();
for(i = 0; i < mDB.size(); i++) {
//Get position of what the DB is and get the latitude and longitude
sLat = mDB.get(i).getLat();
sLng = mDB.get(i).getLng();
markerPosition = new LatLng(sLat, sLng);
map.addMarker(new MarkerOptions()
.position(markerPosition)
.title(mDB.get(i).getTitle())
.snippet("Click for more info.")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.custom_marker)));
}
locationManager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
if ( !locationManager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
disabledGPS();
}
map.setMyLocationEnabled(true);
}
private void disabledGPS() {
final AlertDialog.Builder gpsDisabled = new AlertDialog.Builder(this);
gpsDisabled.setMessage("This app requires GPS to be enabled. Do you wish to continue?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog mainAlert = gpsDisabled.create();
mainAlert.show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public ArrayList<MonumentsDatabase> createDatabase() {
monDatabase = new MonumentsDatabase(this);
try {
monDatabase.createDatabase();
} catch (IOException ioe) {
throw new Error("Unable to create database");
}
try {
monDatabase.openDatabase();
}catch(SQLException sqle){
throw sqle;
}
mDatabase = new ArrayList<MonumentsDatabase>();
monDatabase.setTitle(titles);
monDatabase.setLat(lats);
monDatabase.setLng(lngs);
titles = monDatabase.getTitle();
lats = monDatabase.getLat();
lngs = monDatabase.getLng();
mDatabase.add(monDatabase);
return mDatabase;
}
02-24 12:55:11.691: V/getTitle() - TITLE(18411): Row: 0, Values: Big Ben
02-24 12:55:11.692: V/getTitle() - TITLE(18411): Row: 1, Values: Swansea Castle
02-24 12:55:11.693: V/getTitle() - TITLE(18411): Row: 2, Values: Cardiff Castle
02-24 12:55:11.694: V/getTitle() - TITLE(18411): Row: 3, Values: Mumbles Lighthouse
02-24 12:55:11.695: V/getTitle() - TITLE(18411): Row: 4, Values: Sketty Hall
02-24 12:55:11.695: V/getTitle() - TITLE(18411): Row: 5, Values: St Mary's Church, Swansea
02-24 12:55:11.696: V/getTitle() - TITLE(18411): Row: 6, Values: Loughor
02-24 12:55:11.696: V/getTitle() - TITLE(18411): Row: 7, Values: Oystermouth Castle
02-24 12:55:11.696: V/getTitle() - TITLE(18411): Row: 8, Values: Oxwich Castle
02-24 12:55:11.696: V/getTitle() - TITLE(18411): Row: 9, Values: Penlle'r Castell
02-24 12:55:11.696: V/getTitle() - TITLE(18411): Row: 10, Values: Pennard Castle
02-24 12:55:11.698: V/getTitle() - TITLE(18411): Row: 11, Values: The Palace Theatre
02-24 12:55:11.699: V/getTitle() - TITLE(18411): Row: 12, Values: Morris Castle
02-24 12:55:11.699: V/getTitle() - TITLE(18411): Row: 13, Values: Castle Cinema
02-24 12:55:11.699: V/getTitle() - TITLE(18411): Row: 14, Values: Port Eynon
02-24 12:55:11.700: V/getTitle() - TITLE(18411): Row: 15, Values: Penrice Castle
02-24 12:55:11.700: V/getTitle() - TITLE(18411): Row: 16, Values: Weobley Castle
02-24 12:55:11.700: V/getTitle() - TITLE(18411): Row: 17, Values: St Fagans Castle
02-24 12:55:11.700: V/getTitle() - TITLE(18411): Row: 18, Values: Gregynog Hall
02-24 12:55:11.700: V/getTitle() - TITLE(18411): Row: 19, Values: Margam Castle
02-24 12:55:11.702: V/getLat() - LATITUDE(18411): Row: 0, Values: 51.5008
02-24 12:55:11.703: V/getLat() - LATITUDE(18411): Row: 1, Values: 51.6203
02-24 12:55:11.703: V/getLat() - LATITUDE(18411): Row: 2, Values: 51.4824
02-24 12:55:11.703: V/getLat() - LATITUDE(18411): Row: 3, Values: 51.5671
02-24 12:55:11.703: V/getLat() - LATITUDE(18411): Row: 4, Values: 51.6131
02-24 12:55:11.704: V/getLat() - LATITUDE(18411): Row: 5, Values: 51.619
02-24 12:55:11.704: V/getLat() - LATITUDE(18411): Row: 6, Values: 51.6626
02-24 12:55:11.704: V/getLat() - LATITUDE(18411): Row: 7, Values: 51.5765
02-24 12:55:11.704: V/getLat() - LATITUDE(18411): Row: 8, Values: 51.5546
02-24 12:55:11.705: V/getLat() - LATITUDE(18411): Row: 9, Values: 51.7691
02-24 12:55:11.705: V/getLat() - LATITUDE(18411): Row: 10, Values: 51.5766
02-24 12:55:11.705: V/getLat() - LATITUDE(18411): Row: 11, Values: 51.3739
02-24 12:55:11.705: V/getLat() - LATITUDE(18411): Row: 12, Values: 51.391
02-24 12:55:11.705: V/getLat() - LATITUDE(18411): Row: 13, Values: 51.3715
02-24 12:55:11.706: V/getLat() - LATITUDE(18411): Row: 14, Values: 51.5453
02-24 12:55:11.706: V/getLat() - LATITUDE(18411): Row: 15, Values: 51.5752
02-24 12:55:11.706: V/getLat() - LATITUDE(18411): Row: 16, Values: 51.6128
02-24 12:55:11.706: V/getLat() - LATITUDE(18411): Row: 17, Values: 51.4859
02-24 12:55:11.707: V/getLat() - LATITUDE(18411): Row: 18, Values: 52.3403
02-24 12:55:11.707: V/getLat() - LATITUDE(18411): Row: 19, Values: 51.5628
02-24 12:58:56.017: V/getLng() - LONGITUDE(18567): Row: 0, Values: -0.1247
02-24 12:58:56.018: V/getLng() - LONGITUDE(18567): Row: 1, Values: 3.9412
02-24 12:58:56.018: V/getLng() - LONGITUDE(18567): Row: 2, Values: 3.1811
02-24 12:58:56.018: V/getLng() - LONGITUDE(18567): Row: 3, Values: 3.9723
02-24 12:58:56.018: V/getLng() - LONGITUDE(18567): Row: 4, Values: 3.9883
02-24 12:58:56.020: V/getLng() - LONGITUDE(18567): Row: 5, Values: 3.943
02-24 12:58:56.020: V/getLng() - LONGITUDE(18567): Row: 6, Values: 4.06461
02-24 12:58:56.020: V/getLng() - LONGITUDE(18567): Row: 7, Values: 4.00297
02-24 12:58:56.020: V/getLng() - LONGITUDE(18567): Row: 8, Values: 4.16791
02-24 12:58:56.021: V/getLng() - LONGITUDE(18567): Row: 9, Values: 3.9356
02-24 12:58:56.024: V/getLng() - LONGITUDE(18567): Row: 10, Values: 4.1023
02-24 12:58:56.025: V/getLng() - LONGITUDE(18567): Row: 11, Values: 3.5628
02-24 12:58:56.026: V/getLng() - LONGITUDE(18567): Row: 12, Values: 3.562
02-24 12:58:56.027: V/getLng() - LONGITUDE(18567): Row: 13, Values: 3.5629
02-24 12:58:56.027: V/getLng() - LONGITUDE(18567): Row: 14, Values: 4.215
02-24 12:58:56.027: V/getLng() - LONGITUDE(18567): Row: 15, Values: 4.1703
02-24 12:58:56.027: V/getLng() - LONGITUDE(18567): Row: 16, Values: 4.1994
02-24 12:58:56.028: V/getLng() - LONGITUDE(18567): Row: 17, Values: 3.2677
02-24 12:58:56.028: V/getLng() - LONGITUDE(18567): Row: 18, Values: 3.2108
02-24 12:58:56.029: V/getLng() - LONGITUDE(18567): Row: 19, Values: 3.7254
Latitude | Longitude | Description
11.11 | 11.11 | Place A
22.22 | 22.22 | place B
// getLat() method
_lat = latQuery.getDouble(0);
// getLng() method
_lng = lngQuery.getDouble(0);