2016-11-14 6 views
0

Я использую Карты Google DistanceMatrixService(), чтобы получить маршруты и расстояние между 2 точками в GoogleMaps. Однако результат, который я получаю от службы, немного отличается от результата, показанного на веб-сайте GoogleMaps.DistanceMatrixService дает различное расстояние от Google Maps

Я получаю 4 км, когда веб-сайт показывает 3 км.

Я знаю, что он может иметь разницу при использовании мест вместо фактического адреса, но я использую координаты как в api, так и на веб-сайте, и результат по-прежнему отличается.

Это мой код:

//Just for example 
var origin = '-27.5970141,-48.5614466'; 
var destination = '-27.5927353,-48.5556316'; 

var service = new google.maps.DistanceMatrixService(); 
    service.getDistanceMatrix({ 
     origins: [origin], 
     destinations: [destination], 
     travelMode: google.maps.TravelMode.DRIVING, 
     unitSystem: google.maps.UnitSystem.METRIC 
    }, callback); 

Эти координаты на map gives a distance в 3,1km и по запросу на обслуживание составляет 4,8 км.

Что мне нужно сделать, чтобы получить фактическое расстояние?


Редактировать

Хотя делать некоторые тесты, я заметил, что я могу получить надлежащее расстояние, передав полный адрес вместо координат. Но это дает мне 2 проблемы:

  • 1: Обычно у меня есть доступ только к координатам, из-за его легко хранить/получить информацию (придется изменить некоторые основной код системы, чтобы получить полный адрес);
  • 2: Когда вы имеете дело с местами, где адресная ссылка на большое место, например, университет, где адрес огромен, стартовая точка не всегда там, где она должна была быть. Поэтому я продолжаю получать неправильное местоположение и неправильное расстояние.
+0

4,8 км круглого-а-бой маршрут из-за происхождения, находящихся на «неправильную» стороне моста (это выглядит как «координата» как строки возвращается тот же результат). Вы действительно хотите «управлять» дистанцией? Будет ли ходить пешком? – geocodezip

ответ

2

цитируемые строки, содержащие цифры не являются «координаты» (строки посылаются в геокодером, и приведет в месте, которое является ближайшим «известным» адрес), используйте google.maps.LatLng или google.maps .LatLngLiteral для координат.

От the documentation:

направления Тип: Array < (строка | LatLng | место)>

Массив, содержащий Пункт назначения строки адресов или LatLng, либо предметы, к которым для вычисления расстояния и времени. Необходимые.

происхождение Тип: Array < (строка | LatLng | Место)>

массив, содержащий источник адрес строки или LatLng, либо предметы, из которых следует вычислять расстояние и время. Необходимые.

//Just for example 
var origin = new google.maps.LatLng(-27.5970141,-48.5614466); 
var destination = new google.maps.LatLng(-27.5927353,-48.5556316); 

var service = new google.maps.DistanceMatrixService(); 
service.getDistanceMatrix({ 
    origins: [origin], 
    destinations: [destination], 
    travelMode: google.maps.TravelMode.DRIVING, 
    unitSystem: google.maps.UnitSystem.METRIC 
}, callback); 
+0

Основываясь на ваших комментариях и ответах, я старался делать то, что вы сказали, но я получаю тот же результат. Я даже пытался с разными местоположениями и координатами, но всегда получаю результат такого же типа. При использовании координат расстояние всегда отличается. Только используя полный адрес, я могу получить правильное расстояние, но есть две проблемы, о которых я упомянул в этом вопросе. – celsomtrindade

 Смежные вопросы

  • Нет связанных вопросов^_^