📌  相关文章
📜  如何计算Android中两个位置之间的距离?

📅  最后修改于: 2021-05-13 17:22:26             🧑  作者: Mango

我们已经看到许多使用Google Maps的应用程序。这些地图用于指示Google地图上的位置,我们也可以使用它来计算两个位置之间的距离。在本文中,我们将研究计算Android中两个位置之间的距离。

我们将在本文中构建什么?

我们将构建一个简单的应用程序,其中将显示一个简单的地图,在应用程序启动时,我们将显示一条Toast消息,该消息在地图上的两个位置之间具有一定的距离。下面是视频,我们将在其中观看我们将要构建的内容。我们将计算悉尼到布里斯班距离注意,我们将使用Java语言实现该项目。

分步实施

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。确保在创建新项目时选择“地图活动”。

第2步:生成用于使用Google Maps的API密钥

要生成Maps的API密钥,您可以参考 如何生成用于在Android中使用Google Maps的API密钥。生成Google Maps的API密钥后。我们必须将此密钥添加到我们的项目中。要在我们的应用程序中添加此密钥,请导航至values文件夹> google_maps_api.xml文件,并在第23行中,您必须在YOUR_API_KEY位置添加API密钥。

步骤3:添加依赖关系以计算两个位置之间的距离

导航至应用程序> Gradle脚本> build.gradle文件,然后在“依赖项”部分中添加以下依赖项。

添加以下依赖项后,现在同步您的项目。添加此依赖项后,现在移至MapsActivity。用于显示吐司消息的Java文件。

步骤4:使用MapsActivity。 Java文件

转到MapsActivity。 Java文件并参考以下代码。以下是MapsActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。

Java
import android.os.Bundle;
import android.widget.Toast;
  
import androidx.fragment.app.FragmentActivity;
  
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.maps.android.SphericalUtil;
  
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
  
    private GoogleMap mMap;
      
    // below are the latitude and longitude 
    // of 2 different locations.
    LatLng sydney = new LatLng(-34, 151);
    LatLng Brisbane = new LatLng(-27.470125, 153.021072);
    Double distance;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified 
        // when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
  
    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        // on below line we are calculating the distance between sydney and brisbane
        distance = SphericalUtil.computeDistanceBetween(sydney, Brisbane);
          
        // in below line we are displaying a toast 
        // message with distance between two locations.
        // in our distance we are dividing it by 1000 to
        // make in km and formatting it to only 2 decimal places.
        Toast.makeText(this, "Distance between Sydney and Brisbane is \n " + String.format("%.2f", distance / 1000) + "km", Toast.LENGTH_SHORT).show();
    }
}


添加此代码后。现在运行您的应用程序,并查看该应用程序的输出。

输出:

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处,前往由我们的专家精心策划的指南,以使您立即做好行业准备!