1

Androidプログラムで2つの都市間の走行距離を表示したいので、次のコードを書きました:

package com.example.distancebcities;

import java.io.IOException;
import java.util.List;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends  MapActivity {  
    //extending the MapActivity here
    Geocoder geocoder = null;  
    MapView mapView = null;

    @Override  
    //location display 
    protected boolean isLocationDisplayed() {  
        return false;  
    }  

    @Override  
    protected boolean isRouteDisplayed() {  
        return false; 
    }

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        mapView = (MapView) findViewById(R.id.geoMap);  
        mapView.setBuiltInZoomControls(true); 

        // lat/long of Jacksonville, FL  
        int lat = (int) (30.334954 * 1000000);
        int lng = (int) (-81.5625 * 1000000);  

        GeoPoint pt = new GeoPoint(lat, lng);  
        mapView.getController().setZoom(10);  
        mapView.getController().setCenter(pt);  
        geocoder = new Geocoder(this);              
    }  

    public void doClick(View arg0) {                              
        try {  
            EditText loc = (EditText) findViewById(R.id.location);  

            //getting the dittext id 

            String locationName = loc.getText().toString();  
            List<Address> addressList = geocoder.getFromLocationName(locationName, 5);  
            if (addressList != null && addressList.size() > 0) {  
            int lat = (int) (addressList.get(0).getLatitude() * 1000000);  
            int lng = (int) (addressList.get(0).getLongitude() * 1000000); 

            //getting the lat and long postions of the cities  

            GeoPoint pt = new GeoPoint(lat, lng);  
            mapView.getController().setZoom(15);  
            mapView.getController().setCenter(pt);

            //zooming and display the place of the edit text entered value .
        }  

        catch (IOException e){  
            e.printStackTrace();  
        }  
    }  
}  

場所を取得していますが、2 つの都市間の距離を表示したいと考えています。

このプログラムを続行するにはどうすればよいですか、またはこれを達成するための代替手段はありますか? 私が前進できるように、役に立つリンクを私に送ってください。

4

2 に答える 2

1

2 つの場所の間の距離を見つける組み込みのコードがあります。

distanceBetween(double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results)

Location クラスについては、このリンクを参照してください

于 2012-10-31T09:14:49.443 に答える
0

2 つの場所間の距離を見つけるには、以下のコードを使用します。

public double CalculationByDistance(Location Start, Location End)
{
        double Radius = 6371;
        double lat1 = Start.getLatitude();
        double lat2 = End.getLatitude();
        double lon1 = Start.getLongitude();
        double lon2 = End.getLongitude();
        double dLat = Math.toRadians(lat2 - lat1);
        double dLon = Math.toRadians(lon2 - lon1);
        double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
                + Math.cos(Math.toRadians(lat1))
                * Math.cos(Math.toRadians(lat2)) * Math.sin(dLon / 2)
                * Math.sin(dLon / 2);
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        double km = Radius * c;
        return km * 1000;
}

この距離はMeters

于 2012-10-31T05:35:28.393 に答える