我成功设置了Google地方信息,用于指明特定城镇的地点。我唯一的问题是:如果他选择了一个不在特定城镇的地方,我还没有提醒用户。
我在这里设置了一个jsfiddle:http://jsfiddle.net/pbq2b/
我的JS代码:
$(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);
}
});
当您输入街道名称时,例如&#34; Norris Street&#34;该剧本成功地认出了这个地方在伦敦。当您单击位于伦敦以外的地方时,脚本也会成功识别并提醒用户。
但是,如果您点击某些景点或火车站,例如&#34; Big Ben&#34;或者&#34;希思罗机场&#34;这显然位于伦敦,剧本发出警告说这些地方不在伦敦。怎么会?我怎样才能实现这些地方的城市也被认可?
我在使用此脚本的其他城市遇到同样的问题 - 街道没有问题,但是当我点击火车站时,城市无法识别。
任何人都知道如何识别所有地方的城市?
答案 0 :(得分:0)
我认为你的getTown函数可能存在问题。您是否尝试使用“政治”而不是“地方”?
您可以查看此问题:get city from geocoder results?