DistanceMatrixService dar distância diferente do Google Maps

votos
0

Estou usando o Google Maps DistanceMatrixService()para obter as direções e distância entre 2 pontos em GoogleMaps. No entanto, o resultado que recebo do serviço é um pouco diferente do mostrado por no site do GoogleMaps.

Estou ficando 4 km quando o site mostra 3 km.

Eu sei que pode haver diferença ao usar lugares em vez do endereço real, mas eu estou usando coordenadas em ambos, api e website, e o resultado ainda é diferente.

Este é meu código:

//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);

Estas coordenadas no mapa dá uma distância de 3,1km e na solicitação de serviço é de 4,8 km.

O que eu preciso fazer para obter a distância real?


Editar

Ao fazer alguns testes, eu percebi que pode obter a distância adequada, passando o endereço completo, em vez das coordenadas. Mas isso me dá 2 problemas:

  • 1: Normalmente eu apenas têm acesso às coordenadas, por causa do que é fácil de armazenar / obter a informação (teria que mudar algum código do núcleo do sistema para obter o endereço completo);
  • 2: Quando se tratar de lugares onde a referência de endereços para um grande local, por exemplo, uma universidade, onde o endereço é enorme, o ponto de início nem sempre é onde ele deveria estar. Então eu continuo recebendo o local errado e distância errado.
Publicado 14/11/2016 em 14:12
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

cadeias citadas contendo números não são "coordenadas" (cordas são enviados para o geocoder, e resultará em um local que é o mais próximo "conhecido" endereço), utilizar um google.maps.LatLng ou google.maps.LatLngLiteral para coordenadas.

A partir da documentação :

destinos Tipo: array <(string | LatLng | Place)>

Uma matriz contendo destino cadeias de endereço , ou LatLng ou objetos lugar, que para calcular a distância eo tempo. Requeridos.

origens Tipo: Array <(string | LatLng | Place)>

Uma matriz contendo origem cadeias de endereço , ou LatLng, ou objectos lugar, a partir do qual a calcular a distância e tempo. Requeridos.

//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);
Respondeu 14/11/2016 em 14:57
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more