Java 显示起点的地图。起点和终点是一样的。
显示起点的地图。 为什么数据库中的调用标记不显示。 我不明白。 还是从数据库中写入代码显示错误 这段代码是Map.javaJava 显示起点的地图。起点和终点是一样的。,java,android,Java,Android,显示起点的地图。 为什么数据库中的调用标记不显示。 我不明白。 还是从数据库中写入代码显示错误 这段代码是Map.java public class Map extends FragmentActivity implements LocationListener { SQLiteDatabase SQL; GoogleMap map; myDBClass DB; Cursor cursor; ArrayList<LatLng> MarkerP
public class Map extends FragmentActivity implements LocationListener {
SQLiteDatabase SQL;
GoogleMap map;
myDBClass DB;
Cursor cursor;
ArrayList<LatLng> MarkerPoint = new ArrayList<LatLng>();
double latitude = 0;
double longtitude = 0;
GMapV2Direction md = new GMapV2Direction();
Document document;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.show_map);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext());
if (status != ConnectionResult.SUCCESS) {
int requestCode = 10;
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this,
requestCode);
dialog.show();
} else {
//map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
map = fm.getMap();
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
map.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
if (location != null) {
onLocationChanged(location);
}
locationManager.requestLocationUpdates(provider, 20000, 0, this);
// Destination Marker from Database SQLite
if (MarkerPoint.size() > 1) {
String Name = getIntent().getStringExtra("Name");
DB = new myDBClass(this);
SQL = DB.getWritableDatabase();
cursor = SQL.rawQuery("SELECT *" + " FROM "
+ myDBClass.TABLE_NAME + " WHERE " + myDBClass.NAME
+ " ='" + Name + "'", null);
cursor.moveToFirst();
/**String name = cursor.getString(cursor.getColumnIndex(myDBClass.NAME));
double lat_db = cursor.getDouble(cursor.getColumnIndex(myDBClass.LAT));
double lng_db = cursor.getDouble(cursor.getColumnIndex(myDBClass.LNG));
map.addMarker(new MarkerOptions()
.position(new LatLng(lat_db, lng_db)) .title(name));**/
latitude = cursor.getDouble(cursor.getColumnIndex(myDBClass.LAT));
longtitude = cursor.getDouble(cursor.getColumnIndex(myDBClass.LNG));
cursor.moveToNext();
//MarkerPoint.clear();
//map.clear();
LatLng strpoint = new LatLng(latitude, longtitude);
drawMarker(strpoint);
}
}
DrawRouteTask drawroute = new DrawRouteTask();
drawroute.execute();
}
private class DrawRouteTask extends AsyncTask<String, Void, String> {
private ProgressDialog Dialog;
String response = "";
@Override
protected void onPreExecute() {
Dialog = new ProgressDialog(Map.this);
Dialog.setMessage("Loading");
Dialog.show();
}
@Override
protected String doInBackground(String... urls) {
// Get All Route values
if (MarkerPoint.size() >= 2) {
LatLng Start = MarkerPoint.get(0);
LatLng End = MarkerPoint.get(1);
document = md.getDocument(Start, End,GMapV2Direction.MODE_DRIVING);
response = "Success";
}
return response;
}
@Override
protected void onPostExecute(String result) {
try {
if (response.equalsIgnoreCase("Success")) {
ArrayList<LatLng> directionPoint = md.getDirection(document);
PolylineOptions rectLine = new PolylineOptions().width(10).color(Color.RED);
for (int i = 0; i < directionPoint.size(); i++) {
rectLine.add(directionPoint.get(i));
}
// Adding route on the map
map.addPolyline(rectLine);
}
} catch (Exception e) {
// TODO:ERROR TRACE ROUTE
}
Dialog.dismiss();
}
}
private void drawMarker(LatLng point) {
MarkerPoint.add(point);
MarkerOptions options = new MarkerOptions();
options.position(point);
if (MarkerPoint.size() == 1) {
options.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
} else if (MarkerPoint.size() == 2) {
options.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_RED));
}
map.addMarker(options);
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if (MarkerPoint.size() < 2) {
latitude = location.getLatitude();
longtitude = location.getLongitude();
LatLng point = new LatLng(latitude, longtitude);
map.moveCamera(CameraUpdateFactory.newLatLng(point));
map.animateCamera(CameraUpdateFactory.zoomTo(6));
drawMarker(point);
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
公共类映射扩展FragmentActivity实现LocationListener{
sqlitesql数据库;
谷歌地图;
MyDb类数据库;
光标;
ArrayList MarkerPoint=新的ArrayList();
双纬度=0;
双倍长度=0;
GMapV2Direction md=新的GMapV2Direction();
文件;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(右布局显示地图);
如果(android.os.Build.VERSION.SDK_INT>9){
StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(策略);
}
int status=GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext());
if(状态!=ConnectionResult.SUCCESS){
int requestCode=10;
Dialog Dialog=GooglePlayServicesUtil.getErrorDialog(状态,此,
请求代码);
dialog.show();
}否则{
//map=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
SupportMapFragment fm=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
map=fm.getMap();
map.setMapType(GoogleMap.map\u TYPE\u NORMAL);
map.setMyLocationEnabled(true);
LocationManager LocationManager=(LocationManager)getSystemService(LOCATION\u服务);
标准=新标准();
字符串提供程序=locationManager.getBestProvider(条件为true);
Location Location=locationManager.getLastKnownLocation(提供者);
如果(位置!=null){
onLocationChanged(位置);
}
locationManager.RequestLocationUpdate(提供程序,20000,0,此);
//来自数据库SQLite的目标标记
如果(MarkerPoint.size()>1){
字符串名称=getIntent().getStringExtra(“名称”);
DB=新的myDBClass(此);
SQL=DB.getWritableDatabase();
cursor=SQL.rawQuery(“选择*”+“来自”
+myDBClass.TABLE_NAME+“其中”+myDBClass.NAME
+“=”“+Name+””,空);
cursor.moveToFirst();
/**字符串名称=cursor.getString(cursor.getColumnIndex(myDBClass.name));
double-lat_db=cursor.getDouble(cursor.getColumnIndex(myDBClass.lat));
double lng_db=cursor.getDouble(cursor.getColumnIndex(myDBClass.lng));
addMarker(新的MarkerOptions()
.职位(新LatLng(lat_db,lng_db)).职位(名称)**/
纬度=cursor.getDouble(cursor.getColumnIndex(myDBClass.LAT));
longtudent=cursor.getDouble(cursor.getColumnIndex(myDBClass.LNG));
cursor.moveToNext();
//MarkerPoint.clear();
//map.clear();
LatLng strpoint=新LatLng(纬度、经度);
绘图标记(strpoint);
}
}
DrawRouteTask drawroute=新的DrawRouteTask();
execute();
}
私有类DrawRouteTask扩展异步任务{
私人对话;
字符串响应=”;
@凌驾
受保护的void onPreExecute(){
Dialog=新建ProgressDialog(Map.this);
设置消息(“加载”);
Dialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…URL){
//获取所有路由值
如果(MarkerPoint.size()>=2){
LatLng Start=MarkerPoint.get(0);
LatLng End=标记点get(1);
document=md.getDocument(开始、结束、GMapV2Direction.MODE_驱动);
答复=“成功”;
}
返回响应;
}
@凌驾
受保护的void onPostExecute(字符串结果){
试一试{
if(response.equalsIgnoreCase(“Success”)){
ArrayList directionPoint=md.getDirection(文档);
PolylineOptions rectLine=新的PolylineOptions().width(10).color(color.RED);
对于(int i=0;i