2

我想从许多给定的坐标中找到离我的 gps 位置最近的位置。
示例:
我有 3 个坐标作为我的目的地放入程序中,但我只想去一个离我当前(gps)位置最近的位置。

我正在使用这个意图来显示从我的位置到一个给定位置的方向。

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?f=d&daddr=destcoordinat"));
startActivity(intent);

我可以在这个问题中使用意图还是有任何其他解决方案?

编辑

不知何故,我刚刚得到了答案,但我知道有更好的解决方案。如果你想知道这里。

  1. 我需要计算从我的位置到三个给定位置的距离
  2. 将距离结果放入arraylist
  3. 使用 minValue = Collections.min(distanceArray); 找到最小值
  4. 使用 if else 条件查找离用户位置最近的坐标
    {if(distance1<=minValue){
    using intent to get the direction to location1
    } else if(distance2<=minValue){
    using intent to get the direction to location2
    } 。 ……
  5. 最后,程序可以选择我必须去的最近的地方,并给我
    导航的方向。

*我知道这不是最好的解决方案,因为我必须手动将坐标放入(意图)。

感谢您的回答,我非常感谢您,但如果您有任何其他解决方案,请在下面发表评论。

4

1 回答 1

0

试试这个代码,

private boolean gps_enabled = false;
private boolean network_enabled = false;
private LocationListener locListener = new MyLocationListener();
LocationManager locManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

    try {
        gps_enabled = locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    } catch (Exception ex) {
    }
    try {
        network_enabled = locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    } catch (Exception ex) {
    }

    // don't start listeners if no provider is enabled
    if (!gps_enabled && !network_enabled) {

    }

    if (gps_enabled) {
        locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 10, locListener);
    }
    if (network_enabled) {
        locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 10, locListener);
    }

class MyLocationListener implements LocationListener {

    public void onLocationChanged(Location location) {

            currentLocation = location;


    }



    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }


    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }


    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

}

在获取位置时使用这个,

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("http://maps.google.com/maps?saddr=<start lat>,<start lon>&daddr=<dest lat>,<dest lon>"));
startActivity(intent);
于 2013-09-07T11:08:16.780 回答