2016-08-11 7 views
-1

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

Как только я ухожу, это отлично работает. Но я все еще нуждаюсь в этом, ограниченном границами.

Почему это? и как я могу решить проблему?

КОД:

_geocoder.geocode(_.extend(position, { 
       bounds: { 
        west: -25.806884999999966, 
        east: 16.380615000000034, 
        south: 48.98742739340465, 
        north: 60.16884190739975 
       } 
      }), function (results, status) { 
       if (status === google.maps.GeocoderStatus.OK) { 
        _lastResults = results; 

        deferred.resolve(results); 
       } else { 
        deferred.reject('Geocode was not successful for the following reason: ' + status); 
       } 
      }); 
+0

Пожалуйста обеспечивают [mcve], который демонстрирует проблему. Каков фактический вызов, который терпит неудачу (или, по крайней мере, образец вызова, который терпит неудачу). Откуда возникает '_.extend' и что вы ожидаете от него? (выглядит так, как будто у вас есть синтаксические ошибки в предоставленном фрагменте) – geocodezip

ответ

0

Чтобы добавить границы к GeocoderRequest, он идет внутри запроса объекта:

var data = { 
    bounds: { 
    west: -25.806884999999966, 
    east: 16.380615000000034, 
    south: 48.98742739340465, 
    north: 60.16884190739975 
    } 
}; 
var bounds = new google.maps.LatLngBounds(
       new google.maps.LatLng(data.bounds.south, data.bounds.west), 
       new google.maps.LatLng(data.bounds.north, data.bounds.east)); 

geocoder.geocode({ 
    address: "London", 
    bounds: bounds 
}, function(results, status) { 
    if (status === google.maps.GeocoderStatus.OK) { 
    var marker = new google.maps.Marker({ 
     position: results[0].geometry.location, 
     map: map 
    }); 
    } else { 
    alert('Geocode was not successful for the following reason: ' + status); 
    } 
}); 

Примечание однако:

Дополнительные параметры:

bounds - LatLngBounds, в котором для смещения геокода более заметны. Параметр bounds будет влиять на результаты геокодера, а не полностью ограничивать его. (Для получения дополнительной информации см Viewport ниже Смещение.)

proof of concept fiddle

фрагмент кода:

function initialize() { 
 
    var map = new google.maps.Map(
 
    document.getElementById("map_canvas"), { 
 
     center: new google.maps.LatLng(37.4419, -122.1419), 
 
     zoom: 13, 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }); 
 
    var data = { 
 
    bounds: { 
 
     west: -25.806884999999966, 
 
     east: 16.380615000000034, 
 
     south: 48.98742739340465, 
 
     north: 60.16884190739975 
 
    } 
 
    }; 
 
    var bounds = new google.maps.LatLngBounds(new google.maps.LatLng(data.bounds.south, data.bounds.west), new google.maps.LatLng(data.bounds.north, data.bounds.east)); 
 
    var rectangle = new google.maps.Rectangle({ 
 
    map: map, 
 
    bounds: bounds 
 
    }); 
 
    map.fitBounds(bounds); 
 
    var geocoder = new google.maps.Geocoder(); 
 
    geocoder.geocode({ 
 
    address: "London", 
 
    bounds: bounds 
 
    }, function(results, status) { 
 
    if (status === google.maps.GeocoderStatus.OK) { 
 
     var marker = new google.maps.Marker({ 
 
     position: results[0].geometry.location, 
 
     map: map 
 
     }); 
 
    } else { 
 
     alert('Geocode was not successful for the following reason: ' + status); 
 
    } 
 
    }); 
 
} 
 
google.maps.event.addDomListener(window, "load", initialize);
html, 
 
body, 
 
#map_canvas { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="map_canvas"></div>

+0

Границы работают, это нормально, проблема в том, что один и тот же поиск меньше возвращается в массив 'address_components', когда границы на месте, мне нужен полный набор 'address_components' – DrogoNevets

+0

Просьба уточнить вашу проблему в вашем вопросе. – geocodezip