Различное расстояние на картах Xamarin и Google - PullRequest
0 голосов
/ 26 сентября 2019

Я получаю разные расстояния на картах Google и при расчете с помощью метода CalculateDistance () в Xamarin.Как рассчитать расстояние в Ксамарине?Есть ли какой-либо метод, который я могу использовать для расчета расстояния в Картах в c # / Xamarin?

Приведенный ниже код вычисляет расстояние между двумя точками.Но это отличается от пробега на картах Google.

var location = new Location(21.705723, 72.998199);
var otherLocation = new Location(22.3142, 73.1752);
double distance =  location.CalculateDistance(otherLocation,DistanceUnits.Kilometers);

1 Ответ

0 голосов
/ 26 сентября 2019

Вы никогда не сможете получить то же расстояние, которое отображается в Картах Google, поскольку Карты Google не показывают самое короткое расстояние, но видят множество других вещей, которые делают расстояние в автомобиле отличным от расстояния, пройденного на велосипеде илиходить.Кроме того, сегодняшнее расстояние может отличаться от вчерашнего дня из-за того, что какая-то дорога закрыта на ремонт и т. Д.

Таким образом, единственный способ добиться интеллектуального расчета расстояния на карте Google - это использовать собственный API

1.Создавайте запросы к API Карт Google самостоятельно

Вы можете просто отправить HTTP-запросы в API карт Google, а затем поработать с результатами.Вы можете использовать WebRequest , чтобы подделывать запросы к API Google.Для этого вам понадобится Ключ API Карт .


Ознакомьтесь с Документация API Карт Google (в разделе API веб-служб), в которой перечислены все параметры запроса ипример ответов.

C # пример

protected void Page_Load(object sender, EventArgs e)
{
    string origin = "Oberoi Mall, Goregaon";
    string destination = "Infinity IT Park, Malad East";
    string url = "https://maps.googleapis.com/maps/api/distancematrix/xml?origins=" +
 origin + "&destinations=" + destination + "&key=CKzaDyBE188Pm_TZXCC_x5Gt67FU5vC9mEPw1";
        WebRequest request = WebRequest.Create(url);
        using (WebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (StreamReader reader = new 
            StreamReader(response.GetResponseStream(), Encoding.UTF8))
            {
                DataSet dsResult = new DataSet();
                dsResult.ReadXml(reader);
                duration.Text = dsResult.Tables["duration"].Rows[0]["text"].ToString();
                distance.Text = dsResult.Tables["distance"].Rows[0]["text"].ToString();
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...