2014-12-16 4 views
-1

Я пытаюсь получить географический центр региона под названием «Středočeský kraj» в формате JSON http://maps.googleapis.com/maps/api/geocode/json?address=St%C5%99edo%C4%8Desk%C3%BD%20kraj&sensor=false, но это дает мне неправильный результат. Это дает мне «лат»: 49.8782223, «lng»: 14.9362955, но верно это https://www.google.cz/maps/place/St%C5%99edo%C4%8Desk%C3%BD+kraj/@50.060218,14.4659312,9z/data=!3m1!4b1!4m2!3m1!1s0x470b939c0e8ff2a3:0x100af0f6614a830 (50.060218,14.4659312) Как это возможно, что JSON возвращает неверные данные?Географический центр региона в Google Map API

Спасибо.

ответ

2

Данные, возвращаемые API, неверны, это не документировано, что возвращаемое местоположение для области будет центром области.

Посмотрите на http://gmaps-samples-v3.googlecode.com/svn/trunk/geocoder/v3-geocoder-tool.html#q%3DSt%u0159edo%u010Desk%FD%20kraj. Вы увидите там синий прямоугольник, который знаменует границы этой области.

Чтобы получить центр границ вместо маркеров местоположения его расчет на основе границ:

new google.maps.LatLngBounds(new google.maps.LatLng(49.501336,13.397336), 
          new google.maps.LatLng(50.619099,15.534525)) 
           .getCenter();//returns 50.060217, 14.465930(Prague) 

Как кажется, вы запрашиваете адрес на ServerSide, вы можете просто вычислить центр без использования Javascript-API:

lat:(bounds.southwest.lat+bounds.northeast.lat)/2 
lng:(bounds.southwest.lng+bounds.northeast.lng)/2 

Примечания: результат будет математический центр, а не географический центр (возвращаемый широта будет отличаться), но для потребительных случае оно должно быть достаточно. Для расчета географического центра используйте haversine-formula

+0

Большое спасибо, это то, что мне нужно. Теперь он работает хорошо! –

+0

@DavidHolada отметьте ответ правильно, если это было то, что вам было нужно – sabotero

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