我试图在可见地图的范围内搜索所有城市。我怎么能这样做?
以下是我尝试做的事情:
$.fn.gmap3.geocoder.geocode({ 'address': 'Georgia' }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
globalMap.setCenter(results[0].geometry.location);
var resultBounds = new google.maps.LatLngBounds(
results[0].geometry.viewport.getSouthWest(),
results[0].geometry.viewport.getNorthEast()
);
globalMap.fitBounds(resultBounds);
// get cities in the map
var service = new google.maps.places.PlacesService(globalMap);
var request = {
bounds: resultBounds,
types: ['locality']
};
service.search(request, function (results, status) {
debugger;
});
}
});
但结果是ZERO_RESULTS
。也许原因是结果被限制在半径50.000米?
任何人都知道如何解决我的问题?非常感谢。
- UPDATE -
谢谢Sean仔细阅读我的帖子并提供详细的反馈。
这就是我引用lib的方式:
src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"
我还在地理编码功能中添加了更多细节,以获得更精确的结果。但我仍然没有得到我想要的结果。
检查此页面中的列表:https://developers.google.com/places/documentation/supported_types,我发现第一个列表中的几乎所有项目都返回值,但不会返回第二个列表。唯一的项目返回值是“政治”和“政治”。它只返回1而不是20。
这是修改后的代码:
this.setCenterByAddress = function (address, region) {
$.fn.gmap3.geocoder.geocode({ 'address': address, 'region': region }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
globalMap.setCenter(results[0].geometry.location);
var resultBounds = new google.maps.LatLngBounds(
results[0].geometry.viewport.getSouthWest(),
results[0].geometry.viewport.getNorthEast()
);
globalMap.fitBounds(resultBounds);
// get cities in the map
var service = new google.maps.places.PlacesService(globalMap);
var request = {
bounds: resultBounds,
types: ['country',
'administrative_area_level_1',
'administrative_area_level_2',
'administrative_area_level_3',
'colloquial_area',
'country',
'floor',
'geocode',
'intersection',
'locality',
'natural_feature',
'neighborhood',
'political',
'point_of_interest',
'post_box',
'postal_code',
'postal_code_prefix',
'postal_town',
'premise',
'room',
'route',
'street_address',
'street_number',
'sublocality',
'sublocality_level_4',
'sublocality_level_5',
'sublocality_level_3',
'sublocality_level_2',
'sublocality_level_1',
'subpremise',
'transit_station']
};
service.search(request, function (results, status) {
debugger;
});
}
});
}
更多信息:即使使用位置和半径,相同的值也会返回。我使用免费地图并收到" OVER_QUERY_LIMIT"一直以来。
答案 0 :(得分:1)
除非您使用location
和radius
选项,否则不应限制在50,000米;您正在使用bounds
。我建议退出一个级别并深入研究从geocode
的首发电话返回的结果,因为您对PlacesService
的使用似乎是正确的。 resultBounds
对象内部的值是什么?我还注意到,当您调用地理编码器时,您没有使用区域偏置,而且“Georgia”可能不够具体。例如,您是指俄罗斯联邦或美国的地区吗?我不确定您使用什么网址来加载Google Maps API&放置图书馆,但这也可能影响你的结果。
我会仔细检查从地理编码器返回的结果,因为除非我遗漏了某些东西,否则看起来你的基本方法是合理的。
答案 1 :(得分:0)
使用Geocoding API / Places API,您不能在特定纬度经度附近的地方附近返回两个以上
请参阅Google Places API论坛上的this thread
使用Google Places API作为政治结果无法做到这一点 如地方,邻居和sublocality返回 识别请求的区域,每个请求限制为两个。