Как сделать так, чтобы ограничивающий прямоугольник генерировался динамически в Geonames и Geocoder API
Привет, я пытаюсь получить информацию о землетрясении, когда пользователь вводит город на карту. Прямо сейчас я делаю ограничивающий прямоугольник жестким кодированием (требуется для geonames earthquake api). Я хотел бы сделать ограничительную рамку размером с введенный город. Я вижу в Geocoder API V3, чтобы сделать это:
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
map.fitBounds(results[0].geometry.viewport);
}
});
проблема - это не позволит мне получить север восток юг запад, в котором нуждаются геонам кто-нибудь знает как?
мой текущий код
var address = document.getElementById("address").value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
// Calculate bounding box based on the given address
var north = results[0].geometry.location.lat() + .5;
var south = results[0].geometry.location.lat() - .5;
var east = results[0].geometry.location.lng() + .5;
var west = results[0].geometry.location.lng() - .5;
var earthquake = 'http://api.geonames.org/earthquakesJSON?north=' + north + '&south=' + south + '&east=' + east + '&west=' + west + '&username=*****';
+5 -5 - это то, что расширяет числа в координатах, чтобы создать север юг.... и т. Д.
1 ответ
Вы хотите использовать результат [0].geometry.viewport, который является объектом google.maps.LatLngBounds
var north = results[0].geometry.viewport.getNorthEast().lat();
var south = results[0].geometry.viewport.getSouthWest().lat();
var east = results[0].geometry.viewport.getNorthEast().lng();
var west = results[0].geometry.viewport.getSouthWest().lng();
возиться с ответным сообщением от geonames
возиться с жестко закодированными данными, которые показывают маркеры