Javascript 谷歌地图地点:如何检查所选地点是否在特定城镇?
我成功地设置了Google Places,用于指示特定城镇的地点。我唯一的问题是:如果用户选择了一个不在特定定义城镇的地方,我还没有做到提醒用户 我在这里设置了一个JSFIDLE: 我的JS代码:Javascript 谷歌地图地点:如何检查所选地点是否在特定城镇?,javascript,jquery,google-maps,google-places-api,Javascript,Jquery,Google Maps,Google Places Api,我成功地设置了Google Places,用于指示特定城镇的地点。我唯一的问题是:如果用户选择了一个不在特定定义城镇的地方,我还没有做到提醒用户 我在这里设置了一个JSFIDLE: 我的JS代码: $(function(){ var lat = 51.5073509, lng = -0.12775829999998223, latlng = new google.maps.LatLng(lat, lng), image = 'http://www.google
$(function(){
var lat = 51.5073509,
lng = -0.12775829999998223,
latlng = new google.maps.LatLng(lat, lng),
image = 'http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png';
var mapOptions = {
center: new google.maps.LatLng(lat, lng),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
},
map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions),
marker = new google.maps.Marker({
position: latlng,
map: map,
icon: image
});
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.bindTo('bounds', map);
var infowindow = new google.maps.InfoWindow();
// when user has clicked on an autocomplete suggestion
google.maps.event.addListener(autocomplete, 'place_changed', function() {
infowindow.close();
var place = autocomplete.getPlace();
// get town of selected place
function getTown(address_components) {
var geocoder = new google.maps.Geocoder(); result = address_components;
var info = [];
for (var i = 0; i < result.length; ++i) {
if (result[i].types[0] == "locality") {
return result[i].long_name;
}
}
};
var town = getTown(place.address_components);
// if place is in London, move marker to the place
if (town == 'London') {
infowindow.close();
var place = autocomplete.getPlace();
console.log(place);
if (place.geometry.viewport) {
map.fitBounds(place.geometry.viewport);
} else {
map.setCenter(place.geometry.location);
map.setZoom(17);
}
moveMarker(place.name, place.geometry.location);
} else {
// if not, do nothing and alert user
alert('you must click on a place in London');
}
});
function moveMarker(placeName, latlng){
marker.setIcon(image);
marker.setPosition(latlng);
infowindow.setContent(placeName);
infowindow.open(map, marker);
}
$(函数(){
var lat=51.5073509,
液化天然气=-0.127758299998223,
latlng=新的google.maps.latlng(lat,lng),
图像处理http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png';
var mapOptions={
中心:新google.maps.LatLng(lat,lng),
缩放:13,
mapTypeId:google.maps.mapTypeId.ROADMAP
},
map=new google.maps.map(document.getElementById('map_canvas')、mapOptions),
marker=新的google.maps.marker({
位置:latlng,
地图:地图,
图标:图像
});
var input=document.getElementById('searchTextField');
var autocomplete=new google.maps.places.autocomplete(输入);
autocomplete.bindTo('bounds',map);
var infowindow=new google.maps.infowindow();
//当用户单击自动完成建议时
google.maps.event.addListener(自动完成,'place\u changed',函数(){
infowindow.close();
var place=autocomplete.getPlace();
//获取选定地点的城镇
函数getTown(地址\组件){
var geocoder=new google.maps.geocoder();result=address\u组件;
var信息=[];
对于(变量i=0;i
}))
当您输入街道名称(如“Norris street”)时,脚本将成功识别出该地点位于伦敦。当您单击位于伦敦以外的位置时,脚本也会成功识别并提醒用户
然而,如果你点击某些明显位于伦敦的景点或火车站,如“大本钟”或“希思罗机场”,脚本会发出警报,提示这些地方不在伦敦。怎么会?我如何才能实现这些地方的城市也被认可
我用这个脚本对其他城市也有同样的问题——街道没有问题,但是当我点击一个火车站时,这个城市就不被识别
有谁知道一个很好的解决方案如何识别所有地方的城市吗?我认为getTown函数可能有问题。你试着用“政治”而不是“地方”吗
您可能想检查这个问题:@KentMiller您提到的POI地点的位置返回值是多少?对于“大本钟”或例如“希思罗机场”(忘记我在利物浦的例子),我得到了“未定义”…@KentMiller有几种类似于路线的选项,街道号码等,但也有邮政编码前缀,所以你可以通过邮政编码。我认为伦敦很可能有一个永久的前缀。你可以试着用这个前缀来表示伦敦吗?这不是一个可行的解决方案。在我的网站上,我想提供多个城市,有些地方,如“曼彻斯特”或“利物浦”,没有指定的邮政编码给。。。