Android - Google Maps - 计算两个位置之间的距离(LatLng)
创始人
2024-08-11 20:30:55
0

在Android中,可以使用Google Maps的API来计算两个位置之间的距离。下面是一个示例代码:

  1. 首先,确保你的Android项目中已经添加了Google Play服务库。在app的build.gradle文件中添加以下依赖项:
implementation 'com.google.android.gms:play-services-maps:17.0.0'
  1. 在你的布局文件中添加一个MapView组件:

请确保将YOUR_API_KEY替换为你自己的Google Maps API密钥。

  1. 创建一个新的Activity,并在onCreate方法中添加以下代码:
import android.os.Bundle;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {

    private MapView mapView;
    private GoogleMap googleMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mapView = findViewById(R.id.mapView);
        mapView.onCreate(savedInstanceState);
        mapView.getMapAsync(this);
    }

    @Override
    public void onMapReady(@NonNull GoogleMap map) {
        googleMap = map;

        LatLng location1 = new LatLng(40.712776, -74.005974); // 第一个位置的经纬度
        LatLng location2 = new LatLng(34.052235, -118.243683); // 第二个位置的经纬度

        googleMap.addMarker(new MarkerOptions().position(location1).title("Location 1"));
        googleMap.addMarker(new MarkerOptions().position(location2).title("Location 2"));

        float distance = calculateDistance(location1, location2);
        Toast.makeText(this, "Distance: " + distance + " meters", Toast.LENGTH_SHORT).show();

        googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location1, 10));
    }

    private float calculateDistance(LatLng location1, LatLng location2) {
        float[] results = new float[1];
        Location.distanceBetween(location1.latitude, location1.longitude,
                location2.latitude, location2.longitude, results);
        return results[0];
    }

    @Override
    public void onResume() {
        super.onResume();
        mapView.onResume();
    }

    @Override
    public void onPause() {
        super.onPause();
        mapView.onPause();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mapView.onDestroy();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        mapView.onLowMemory();
    }
}

在上面的代码中,我们首先在onMapReady方法中设置了两个位置的经纬度,并在地图上添加了两个标记。然后,我们使用calculateDistance方法计算两个位置之间的距离,并显示一个Toast消息来展示这个距离。最后,我们使用moveCamera方法将地图的焦点设置在第一个位置上。

请确保在AndroidManifest.xml文件中添加以下权限:



这样,你就可以在Android应用程序中使用Google Maps API计算两个位置之间的距离了。记得替换代码中的YOUR_API_KEY为你自己的API密钥。

相关内容

热门资讯

安装了Anaconda之后找不... 在安装Anaconda后,如果找不到Jupyter Notebook,可以尝试以下解决方法:检查环境...
避免在粘贴双引号时向VS 20... 在粘贴双引号时向VS 2022添加反斜杠的问题通常是由于编辑器的自动转义功能引起的。为了避免这个问题...
安装apache-beam==... 出现此错误可能是因为用户的Python版本太低,而apache-beam==2.34.0需要更高的P...
安装安卓应用时出现“Play ... 在安装安卓应用时出现“Play Protect 警告弹窗”的原因是Google Play Prote...
Android Recycle... 要在Android RecyclerView中实现滑动卡片效果,可以按照以下步骤进行操作:首先,在项...
iwatch怎么连接安卓系统,... 你有没有想过,那款时尚又实用的iWatch,竟然只能和iPhone好上好?别急,今天就来给你揭秘,怎...
安卓系统怎么连不上carlif... 安卓系统无法连接CarLife的原因及解决方法随着智能手机的普及,CarLife这一车载互联功能为驾...
本地化字符串和默认值 本地化字符串是指将应用程序中的文本内容根据不同的语言和地区进行翻译和适配的过程。当应用程序需要显示不...
iqoo安卓14系统怎么升级系... 亲爱的iQOO手机用户们,是不是觉得你的手机系统有点儿落伍了呢?别急,今天就来手把手教你如何升级到最...
windows安装系统退不出来... Windows安装系统退不出来的解决方法详解在电脑使用过程中,有时会遇到在安装Windows系统时无...