Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示起点的地图。起点和终点是一样的。_Java_Android - Fatal编程技术网

Java 显示起点的地图。起点和终点是一样的。

Java 显示起点的地图。起点和终点是一样的。,java,android,Java,Android,显示起点的地图。 为什么数据库中的调用标记不显示。 我不明白。 还是从数据库中写入代码显示错误 这段代码是Map.java public class Map extends FragmentActivity implements LocationListener { SQLiteDatabase SQL; GoogleMap map; myDBClass DB; Cursor cursor; ArrayList<LatLng> MarkerP

显示起点的地图。 为什么数据库中的调用标记不显示。 我不明白。 还是从数据库中写入代码显示错误

这段代码是Map.java

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