Google Map API в Android Studio, чтобы найти расстояние, но не отображать карты - PullRequest
0 голосов
/ 12 сентября 2018

Я хочу использовать API Google Map API в Android Studio, чтобы найти расстояние между 2 местами для какой-то вычислительной цели, но я не хочу отображать карту или маркеры, как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Если вы хотите рассчитать расстояние между двумя местами без отображения карты Google, я думаю, что вместо Google Map вы должны реализовать API матрицы расстояний

Я покажу вам примериз документации

запрос:

https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=Washington,DC&destinations=New+York+City,NY&key=YOUR_API_KEY

JSON-ответ:

{
   "destination_addresses" : [ "New York, NY, USA" ],
   "origin_addresses" : [ "Washington, DC, USA" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "225 mi",
                  "value" : 361715
               },
               "duration" : {
                  "text" : "3 hours 49 mins",
                  "value" : 13725
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

Или используйте метод disntanceTo () из Location , который возвращает кратчайшийрасстояние между двумя точками

locationA.setLatitude(aLatA);
locationA.setLongitude(aLnA);

locationB.setLatitude(aLatB;
locationB.setLongitude(aLngB);

distanceBetweenLocations = locationA.distanceTo(locationB) 
0 голосов
/ 12 сентября 2018

Если все, что вам нужно, - это рассчитать расстояние между двумя точками на земле, и у вас есть координаты по широте и долготе, тогда вам не нужны никакие Карты или библиотеки API Google. Это просто стоит дополнительных накладных расходов и технического обслуживания. Просто создайте статический метод, подобный этому:

public static double getDistanceMeters(LatLng pt1, LatLng pt2){
    double distance = 0d;
    try{
        double theta = pt1.longitude - pt2.longitude;
        double dist = Math.sin(Math.toRadians(pt1.latitude)) * Math.sin(Math.toRadians(pt2.latitude))
                + Math.cos(Math.toRadians(pt1.latitude)) * Math.cos(Math.toRadians(pt2.latitude)) * Math.cos(Math.toRadians(theta));

        dist = Math.acos(dist);
        dist = Math.toDegrees(dist);
        distance = dist * 60 * 1853.1596;
    }
    catch (Exception ex){
        System.out.println(ex.getMessage());
    }
    return distance;
} 

Тот же алгоритм будет работать для любой платформы. Просто переведите его на соответствующий язык программы.

0 голосов
/ 12 сентября 2018

Вы можете сослаться на этот пост , чтобы найти расстояние между двумя местами.

Но если вы не хотите показывать карту или маркеры, вы просто ставите height и width фрагмента карты как 0dp.

Вот пример:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="0dp"
    android:layout_height="0dp"
    tools:context="com.example.ahmedsamra.mansouratourguideapp.MapsActivity" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...