Поиск ближайшего местоположения из списка координат

Я хотел бы найти ближайшее местоположение для данного адреса (пользовательский ввод) из массива местоположений (широта, долгота).

(Или, что еще лучше, отсортировать покрытия по расстоянию)

Я хочу добиться этого без отображения карты. Я также не уверен, какой API Google лучше всего подходит для этого (API геокодирования, Maps v3 и т. д.).

Что было бы лучшим подходом для этого?

Если бы кто-то мог указать мне в правильном направлении, это было бы очень признательно.

Места:

[
    {
        // Amsterdam
        "lat": 52.3702157,
        "lng": 4.8951679
    },
    {
        // Berlin
        "lat": 52.5200066,
        "lng": 13.404954
    },
    {
        // Brussels
        "lat": 50.85,
        "lng": 4.35
    },
    {
        // Paris
        "lat": 48.856614,
        "lng": 2.3522219
    },
    {
        // Madrid
        "lat": 40.4167754,
        "lng": -3.7037902
    }
]

Ввод пользователя: Antwerp

{
    "lat": 51.2194475,
    "lng": 4.4024643
}

Должен вернуться: Brussels

{
    "lat": 50.85,
    "lng": 4.35
}

Или, отсортированные по расстоянию:

[
    {
        // Brussels
        "lat": 50.85,
        "lng": 4.35
    },
    {
        // Amsterdam
        "lat": 52.3702157,
        "lng": 4.8951679
    },
    {
        // Paris
        "lat": 48.856614,
        "lng": 2.3522219
    },
    {
        // Berlin
        "lat": 52.5200066,
        "lng": 13.404954
    },
    {
        // Madrid
        "lat": 40.4167754,
        "lng": -3.7037902
    }
]

person Chris    schedule 19.06.2014    source источник
comment
developers.google.com/maps/documentation/javascript/   -  person Dr.Molle    schedule 20.06.2014
comment
I want to achieve this without displaying a map. Условия использования включают раздел (g) Запрещено использование контента без карты Google.. Вы должны убедиться, что ваше приложение соответствует условиям обслуживания.   -  person geocodezip    schedule 20.06.2014
comment
Как сделать в php или html?   -  person MagikVishal    schedule 02.12.2015


Ответы (1)


Android предоставляет вам удобную функцию, которая может рассчитать расстояние (DistanceTo()) (ссылка: http://developer.android.com/reference/android/location/Location.html) Вот пример того, как использовать DistanceTo с API карты Google:

    private double CalculateDistance(LatLng endPoint)
    {
        //Convert LatLng to Location
        Location location = new Location("tmploc");
        location.Latitude = endPoint.Latitude;
        location.Longitude = endPoint.Longitude;
        location.Time = currentLocation.Time; //Set time as current position's time. (could also be datetime.now)
        return currentLocation.DistanceTo(location);
    }

Затем вы можете использовать это, чтобы найти наименьшее значение:

public int Lowest(params int[] inputs)
{
  return inputs.Min();
}

(ссылка: https://stackoverflow.com/a/4390808/3861983)

Если вы делаете метод, в котором вы используете первый метод, добавьте его в массив, а затем получите наименьшее число из второго метода. Вы достигнете своей цели.

person Wildcard    schedule 21.07.2014