Tính khoảng cách giữa 2 địa điểm bằng google maps api

Rất nhiều điều thú vị có thể được thực hiện bằng phương pháp sử dụng API Google Maps. Ngày nay, các nhà trở nên tân tiến đang demo nghiệm với triển khai những loại nhân kiệt khác nhau, bao gồm cả tính năng đo lường và tính toán khoảng phương pháp giữa nhì điểm hoặc tọa độ GPS vào Android áp dụng di động. Điều này rất có thể đạt được thông qua API Google Maps. Với nó đã tạo cho máy tính khoảng cách tọa độ GPS thuận lợi tìm thấy nhì bộ biến hóa tọa độ GPS trên phiên bản đồ là bao xa.

Bạn đang xem: Tính khoảng cách giữa 2 địa điểm bằng google maps api

Nếu bạn đang có kế hoạch cách tân và phát triển một áp dụng du lịch, theo dõi vị trí, đặt xe xe taxi hoặc bất kỳ ứng dụng để xe nào, thì một hào kiệt như vậy khôn xiết hữu ích. Đã cải tiến và phát triển hơn 50 vận dụng đặt taxi với hơn 40 ứng dụng ship hàng theo yêu thương cầu, chúng tôi đã sử dụng bản lĩnh này nhằm theo dõi thời gian thực các lần.

Trong nội dung bài viết về ứng dụng app android này, chúng tôi phát triển một áp dụng demo hiển thị tuyến đường giữa nhì địa điểm.

Tính khoảng cách giữa nhì điểm

Đây là quy trình từng cách để đo lường khoảng giải pháp giữa hai điểm bằng phương pháp sử dụng API Google Maps.

Tạo một dự án mới trong thực đơn phim trong android Studio.


*

*


*

Bắt đầu tích thích hợp mã

Hoạt động chủ yêu

public class MainActivity extends AppCompatActivity implements ConstantInterface, OnMapReadyCallback, DirectionCallback,GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListenerprivate SupportMapFragment mapFragment;private GoogleMap googleMap;private TextView textAddress;private LatLng currentLatLng;private GoogleApiClient googleApiClient;private LocationRequest locationRequest;private AppUtility appUtility;private RunTimePermission runTimePermission;
Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initControls();
Overridepublic void onStop() if (googleApiClient != null && googleApiClient.isConnected()) googleApiClient.disconnect();super.onStop(); private void initControls() appUtility = new AppUtility(this);runTimePermission = new RunTimePermission(this);mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);textAddress = (TextView) findViewById(R.id.textAddress);textAddress.setOnClickListener(new View.OnClickListener()
Overridepublic void onClick(View view) // This is to lớn prevent user khổng lồ click on the map under the distance text.);if (appUtility.checkPlayServices()) googleApiClient = new GoogleApiClient.Builder(this).addApi(LocationServices.API).addConnectionCallbacks(this).addOnConnectionFailedListener(this).build();googleApiClient.connect();
Overridepublic void onMapReady(final GoogleMap googleMap) this.googleMap = googleMap;if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) googleMap.setMyLocationEnabled(true);googleMap.moveCamera(CameraUpdateFactory.newLatLng(currentLatLng));googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, 15f));googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener()
Overridepublic void onMapClick(LatLng latLng) googleMap.clear();googleMap.addMarker(new MarkerOptions().position(latLng));GoogleDirection.withServerKey(getString(R.string.map_direction_key)).from(currentLatLng).to(new LatLng(latLng.latitude, latLng.longitude)).transportMode(TransportMode.DRIVING).execute(MainActivity.this);showDistance(latLng);); 
Overridepublic void onDirectionSuccess(Direction direction, String rawBody) if (direction.isOK()) ArrayList directionPositionList = direction.getRouteList().get(0).getLegList().get(0).getDirectionPoint();googleMap.addPolyline(DirectionConverter.createPolyline(this, directionPositionList, 1, ContextCompat.getColor(this, R.color.colorPrimary)));
Overridepublic void onDirectionFailure(Throwable t) private void showDistance(LatLng latLng) Location locationA = new Location("Location A");locationA.setLatitude(latLng.latitude);locationA.setLongitude(latLng.longitude);Location locationB = new Location("Location B");locationB.setLatitude(currentLatLng.latitude);locationB.setLongitude(currentLatLng.longitude);textAddress.setText("Distance : " + new DecimalFormat("##.##").format(locationA.distanceTo(locationB)) + "m");// checking Runtime permissionprivate void getPermissions(String<> strings) runTimePermission.requestPermission(strings, new RunTimePermission.RunTimePermissionListener()
Overridepublic void permissionGranted() locationChecker(googleApiClient, MainActivity.this);
Overridepublic void permissionDenied() setResult(RESULT_CANCELED);finish();); // Checking whether location service is enable or not.

Xem thêm: Cách Gỡ Bỏ Phần Mềm Avast Free Antivirus Trên Win 10, Cách Gỡ Avast Free Antivirus Trên Máy Tính

public void locationChecker(GoogleApiClient mGoogleApiClient, final Activity activity) // Creating location request objectlocationRequest = LocationRequest.create();locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);locationRequest.setInterval(UPDATE_INTERVAL);locationRequest.setSmallestDisplacement(DISPLACEMENT);LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder().addLocationRequest(locationRequest);builder.setAlwaysShow(true);PendingResult result = LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, builder.build());result.setResultCallback(new ResultCallback()
Overridepublic void onResult(LocationSettingsResult result) final Status status = result.getStatus();final LocationSettingsStates state = result.getLocationSettingsStates();switch (status.getStatusCode()) case LocationSettingsStatusCodes.SUCCESS:getLocation();break;case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:try status.startResolutionForResult(activity, 1000); catch (IntentSender.SendIntentException e) break;case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:break;);private void getLocation() if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this);
Overridepublic void onConnected(
Nullable Bundle bundle) getPermissions(new String<>Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION);
Overridepublic void onConnectionSuspended(int i)
Overridepublic void onConnectionFailed(
NonNull ConnectionResult connectionResult)
Overridepublic void onLocationChanged(Location location) currentLatLng = new LatLng(location.getLatitude(), location.getLongitude());if (googleMap == null) mapFragment.getMapAsync(this);activitymain.xml

xml version="1.0" encoding="utf-8"?>AppUtility.java


public class AppUtility implements ConstantInterface private Context context;public AppUtility(Context context) this.context = context;// kiểm tra weather google play services is available or not.public boolean checkPlayServices() GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();int result = googleAPI.isGooglePlayServicesAvailable(context);if (result != ConnectionResult.SUCCESS) if (googleAPI.isUserResolvableError(result)) googleAPI.getErrorDialog((Activity) context, result, PLAY_SERVICES_RESOLUTION_REQUEST).show();return false;return true;RunTimePermission.java

public class RunTimePermission extends AppCompatActivity {private Activity activity;private ArrayList arrayListPermission;private String<> arrayPermissions;private RunTimePermissionListener runTimePermissionListener;public RunTimePermission(Activity activity) this.activity = activity;public class PermissionBean String permission;boolean isAccept;public void requestPermission(String<> permissions, RunTimePermissionListener runTimePermissionListener) {this.runTimePermissionListener = runTimePermissionListener;arrayListPermission = new ArrayList();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) for (int i = 0; i = Build.VERSION_CODES.LOLLIPOP) adb = new AlertDialog.Builder(activity, android.R.style.Theme_Material_Light_Dialog_Alert); else adb = new AlertDialog.Builder(activity);adb.setTitle(activity.getResources().getString(R.string.app_name));String msg = "Dear User,

" +"

Seems lượt thích you have "Denied" the minimum requirement permission to lớn access more features of application.

" +"

You must have to lớn "Allow" all permission. We will not giới thiệu your data with anyone else.

" +"

Do you want to lớn enable all requirement permission ?

" +"

Go khổng lồ : Settings >> ứng dụng > " + activity.getResources().getString(R.string.app_name) + " Permission : Allow ALL


";adb.setMessage(Html.fromHtml(msg));adb.setPositiveButton("Allow All", new AlertDialog.OnClickListener()
Overridepublic void onClick(DialogInterface dialog, int which) callSettingActivity();dialog.dismiss(););adb.setNegativeButton("Remind Me Later", new AlertDialog.OnClickListener()
Overridepublic void onClick(DialogInterface dialog, int which) dialog.dismiss(););if (!((Activity) activity).isFinishing() && msg.length() > 0) adb.show(); else Log.v("log_tag", "either activity finish or message length is 0");private void updatePermissionResult(String permissions, int grantResults) {for (int i = 0; i

ConstantInterface.java

public interface ConstantInterface int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;int UPDATE_INTERVAL = 10000; // 10 secint DISPLACEMENT = 10; // 10 metersStrings.xml

MapDirectionDemoYour hệ thống KeyDimensions.xml

22sp8dpAndroidManiFest.xml

 Và thực hiện!

Cuối cùng, họ sẽ coi câu trả lời cho một số câu hỏi phổ biến chuyển nhất.


Các thắc mắc thường gặp

Bạn có thể làm gì cùng với Google maps API?

Bạn có thể tạo phiên bản đồ tùy chỉnh, lập kế hoạch tuyến đường, tìm khoảng cách giữa hai hoặc các điểm, tạo bạn dạng đồ hoàn toàn có thể tìm kiếm, theo dõi thời hạn thực, tuấn kiệt đăng ký, đo quãng con đường theo đường thẳng thân hai thành phố, chỉ là một trong những vài trong số những việc bạn có thể làm.

Tôi hoàn toàn có thể sử dụng Google Maps trong ứng dụng của chính mình không?

Có, bạn cũng có thể sử dụng các sản phẩm của Google Maps Platform trong cả trên những ứng dụng chưa phải web. Điều kiện độc nhất vô nhị là bạn tuân thủ các quy định sử dụng của căn nguyên Google Maps. Ngay cả khi ứng dụng của người tiêu dùng là ứng dụng truy cập riêng tư, các bạn vẫn hoàn toàn có thể sử dụng các dịch vụ Google Maps, tuyến đường và Địa điểm.

Bạn đã trở nên tân tiến ứng dụng làm sao có tác dụng theo dõi khoảng cách chưa?

Có, shop chúng tôi đã cách tân và phát triển các ứng dụng khác biệt sử dụng định vị GPS, theo dõi khoảng cách thời gian thực và những tính năng khác. Trên thực tế, công ty chúng tôi đã cách tân và phát triển hơn 50 ứng dụng giống Uber và hơn 40 áp dụng theo yêu thương cầu. Một trong những trong số sẽ là Glovo, Bevy, Baloora cùng One-8.


Phần kết luận

Đây là cách đơn giản và dễ dàng và dễ dãi nhất để tính khoảng cách giữa nhì vĩ độ và vĩ độ trong áp dụng Android. API tọa độ của Google Maps cung ứng cho nhà trở nên tân tiến nhiều kĩ năng để cung cấp cho tất cả những người dùng ứng dụng.

Sau khi đọc nội dung bài viết này, chúng ta có thể muốn biết về kiểu cách sử dụng Google map Marker nhằm xem nhiều dữ liệu bằng cách sử dụng chính sách xem app android hoặc biện pháp vẽ một chốt vị trí hiện tại trên Google map với chức năng tìm kiếm địa chỉ. Bởi vì vậy, nếu khách hàng có một ý tưởng ứng dụng liên quan đến nhu cầu về Google Maps trong vận dụng của mình, ví dụ như tính khoảng cách giữa hai điểm, thì chúng ta nên triển khai chức năng tính khoảng cách giữa hai tọa độ GPS.

Để triển khai, chúng ta cũng có thể làm theo phía dẫn API Google Maps của chúng tôi hoặc mướn một nhà trở nên tân tiến ứng dụng Android nếu khách hàng cần cung cấp kỹ thuật nhằm thêm áp dụng gốc của mình. Nhận phiên bản sao mã miễn giá thành để đo lường và tính toán khoảng phương pháp giữa hai phiên bản trình diễn điểm bởi Google Maps tự Github.