0

私は自分の論文で Android の Google マップを開発しています。Android の運転ルートについて質問できますか?

これが私の質問です。

「ボタンがクリックされたときにAndroid Googleマップでランダムな運転ルートを生成するにはどうすればよいですか?」

ありがとうございました!。

これを通してGoogleマップに尋ねました。

    private void parsing(GeoPoint start, GeoPoint end) throws ClientProtocolException, IOException, JSONException, URISyntaxException{
    HttpClient httpclient = new DefaultHttpClient();
    StringBuilder urlstring = new StringBuilder();
    urlstring.append("https://maps.googleapis.com/maps/api/directions/json?origin=")
    .append(Double.toString((double)start.getLatitudeE6()/1E6)).append(",").append(Double.toString((double)start.getLongitudeE6()/1E6)).append("&destination=")
    .append(Double.toString((double)end.getLatitudeE6()/1E6)).append(",").append(Double.toString((double)end.getLongitudeE6()/1E6))
    .append("&sensor=false");
    //urlstring.append("http://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&sensor=true");
    url = new URI(urlstring.toString());

    HttpPost httppost = new HttpPost(url);

    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    InputStream is = null;
    is = entity.getContent();
    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
    StringBuilder sb = new StringBuilder();
    sb.append(reader.readLine() + "\n");
    String line = "0";
    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    is.close();
    reader.close();
    String result = sb.toString();
    JSONObject jsonObject = new JSONObject(result);
    JSONArray routeArray = jsonObject.getJSONArray("routes");
    JSONObject routes = routeArray.getJSONObject(0);
    JSONObject overviewPolylines = routes.getJSONObject("overview_polyline");
    String encodedString = overviewPolylines.getString("points");
    List<GeoPoint> pointToDraw = decodePoly(encodedString);

    //Added line:
    mv_mapview.getOverlays().add(new RoutePathOverlay(pointToDraw));
}

地図をタップしました。

    class MapOverlay extends Overlay {

        @Override
        public boolean onTap(final GeoPoint p, MapView mapView) {
            // TODO Auto-generated method stub

            geop_Tpoint = p;
            mcon_mapcontrol = mapView.getController();
            mcon_mapcontrol.animateTo(p);

            mv_mapview.invalidate();

            longitude = (int)(p.getLongitudeE6()*1E6);
            latitude = (int)(p.getLatitudeE6()*1E6);



            new AlertDialog.Builder(ShowMap.this)
                    .setTitle("Routes")
                    .setMessage("Display Routes?")
                    .setNegativeButton("NO",
                            new DialogInterface.OnClickListener() {

                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    // TODO Auto-generated method stub

                                    textlocation.setText("Tap in the Map for Destination!");
                                    dialog.dismiss();


                                }
                            })
                    .setPositiveButton("YES",
                            new DialogInterface.OnClickListener() {

                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    // TODO Auto-generated method stub
                                    try{
                                        textlocation.setText("");
                                        parsing(geop_startpoint,geop_Tpoint);
                                        geocodeExecuter(geop_startpoint,geop_Tpoint);
                                        showButton.setEnabled(true);


                                    }catch(Exception e){

                                        textlocation.setText(""+ e.getMessage());

                                    }


                                }

                            }).show();
            showButton.setEnabled(true);
            return true;
        }

出発点は、GPS を介して、私がどこにいるかを教えてくれることです。

4

3 に答える 3

5

これは、A 地点から B 地点への道順を取得するのに役立ちます。

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?saddr=" + startLatitude + "," + startLongitude + "&daddr=" + destlat + "," + destlon));
startActivity(intent);
于 2013-01-16T07:14:55.103 に答える
0

これは、Javaで変換する方法です。

    public List<GeoPoint> findCoordinatesInACircle(double lat, double longi,double radius){



        double newLat;
        double newLong;

        List<GeoPoint> searchpoints = new ArrayList<GeoPoint>();


        double rLat=(radius/6371)*(180/Math.PI);  
        double rLon= rLat/Math.cos(longi * (Math.PI/180));

        for(int i =0 ; i < 181; i++ ){

            double iRad = i*(Math.PI/180);
            newLat = lat + (rLat * Math.sin(iRad));
            newLong = longi + (rLon * Math.cos(iRad));

            GeoPoint onePoint = new GeoPoint((int)(float)(newLat),(int)(float)(newLong));

            if(i%pointInterval == 0){
                searchpoints.add(onePoint); 
            }

        }
        return searchpoints;

    }
于 2012-12-04T11:27:04.583 に答える
0

それは、Google マップへの道順をどのように尋ねるかによって異なります。ソースと宛先を指定するリンクを使用してインテントを作成する場合は、次のような呼び出しを試みることができます。

https://maps.google.com/maps?saddr=START_POINT&daddr=MIDDLE_POINT+to:DESTINATION_POINT

これは GPS 座標も受け入れるため、次のように呼び出すこともできます。

https://maps.google.com/maps?saddr=START_POINT&daddr=XX.YYYYY,WW.ZZZZZ+to:DESTINATION_POINT

出発地と目的地が固定されている場合は、次のようなことを試みることができます。

  • スタート地点の GPS 座標を取得する
  • 目的地の GPS 座標を取得する
  • ソースと宛先によって定義された長方形を超えない座標 (XY) のカップルを生成します。

これにより、A と B の間のどこかにランダムなポイントが生成されます。

Google マップは、トウモロコシ畑などの真ん中に中心点を置くと、道路に最も近い点を選択して道順を生成するほどスマートです。


更新: コードを読んだ後: 結果を達成する最も簡単な方法は、A と B の GPS 位置を見つけて、2 つの間のランダム ポイントを生成し、A-RandomPoint B-RandomPoint を 2 回呼び出すことだと思います。

合計距離は、AR トリップと RB トリップの合計になります。時間は同じです。

中間点の計算について: まず、境界を設定します。X を計算する場合: ポイント A の X とポイント B の X を取得します。この時点で、minX が最小になり、maxX が最大になります (ポイントが近い場合は、何をしているのかを慎重に検討する必要があります)。緑魔女)。最大値と最小値の間でランダムなフロートを生成します。これは些細な作業であり、そのための結果は山ほどあります。ほんの一例: Javaで特定の範囲内でランダムな整数を生成するにはどうすればよいですか?

于 2012-11-21T13:47:57.500 に答える