如何使用intent从我的gps位置到许多给定位置的一个位置作为目的地

时间:2013-09-07 11:03:53

标签: android android-intent gps

我想从许多给定的坐标中找到离我的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. 查找最小值
  5. 使用if else条件查找最接近用户位置的坐标
    {如果(距离1&LT = minValue(最小值)){
     使用意图获取位置1的方向  }  否则if(distance2< = minValue){
     使用意图获取位置2的方向  }  .....
  6. 最后,程序可以选择我必须去的最近的地方给我 方向导航。
  7. *我知道这不是最佳解决方案,因为我必须手动将坐标放入(意图)。

    感谢您的回答我真的很感激,但如果您有任何其他解决方案,请在下面评论。

1 个答案:

答案 0 :(得分: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);