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

      21

Rất những điều thú vị có thể được thực hiện bằng cách sử dụng API Google Maps. Ngày nay, những nhà trở nên tân tiến đang demo nghiệm với triển khai những loại tác dụng khác nhau, bao hàm cả tính năng thống kê giám sát khoảng bí quyết giữa nhì điểm hoặc tọa độ GPS vào Android ứng dụng di động. Điều này rất có thể đạt được trải qua API Google Maps. Và nó đã tạo cho máy tính khoảng cách tọa độ GPS thuận tiện tìm thấy nhị bộ chuyển đổi tọa độ GPS trên bạn dạng đồ 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 sẵn có kế hoạch trở nên tân tiến một áp dụng du lịch, theo dõi vị trí, để xe xe taxi hoặc ngẫu nhiên ứng dụng đặt xe nào, thì một nhân kiệt như vậy rất hữu ích. Đã phát triển hơn 50 vận dụng đặt taxi với hơn 40 ứng dụng giao hàng theo yêu thương cầu, shop chúng tôi đã sử dụng bản lĩnh này để theo dõi thời hạn thực các lần.

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

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

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

Tạo một dự án công trình mới trong menu phim trong apk Studio.

*

*

*

Bắt đầu tích đúng theo 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 khổng lồ prevent user lớn click on the maps 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 Tạo Full Thumbnail, Xem Trực Tiếp Video Youtube Trên Facebook

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 khổng lồ "Allow" all permission. We will not chia sẻ your data with anyone else.

" +"

Do you want lớn enable all requirement permission ?

" +"

Go to lớn : Settings >> app > " + 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, chúng ta sẽ coi câu vấn đáp cho một số câu hỏi phổ biến hóa nhất.


Các câu hỏi thường gặp

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

Bạn rất 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 đồ hoàn toàn có thể tìm kiếm, theo dõi thời gian thực, bản lĩnh đăng ký, đo quãng đường theo mặt đường thẳng thân hai thành phố, chỉ là một trong những vài trong các những việc chúng ta có thể làm.

Tôi hoàn toàn có thể sử dụng Google Maps vào ứng dụng của bản thân không?

Có, bạn 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 tuyệt nhất là bạn tuân thủ các điều khoản sử dụng của nền tảng Google Maps. Ngay cả khi ứng dụng của người tiêu dùng là ứng dụng truy vấn riêng tư, bạn vẫn có thể sử dụng các dịch vụ Google Maps, tuyến phố và Địa điểm.

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

Có, công ty chúng tôi đã phát triển các ứng dụng không giống nhau sử dụng xác định 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ửa hàng chúng tôi đã phát triển hơn 50 áp dụng giống Uber và hơn 40 ứng dụng theo yêu thương cầu. Một trong những trong số sẽ là Glovo, Bevy, Baloora và One-8.


Phần kết luận

Đây là cách đơn giản dễ dàng và thuận tiện nhất nhằm tính khoảng cách giữa hai vĩ độ cùng vĩ độ trong ứng dụng Android. API tọa độ của Google Maps hỗ trợ cho nhà cải tiến và phát triển nhiều nhân kiệt để cung cấp cho những người dùng ứng dụng.

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

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

hotlive |

Hi88