我有一个 Google Maps 小部件在 Java 中的 JSF2 项目提供的 .xhtml 页面上工作。地图显示,我有一个添加标记的功能,效果很好。但是,任何使用 Geocoder 的尝试似乎都会导致返回“错误”状态。Google Maps API 在它的五个可能的“status”变量返回值候选中没有提到这样的错误状态。
Followng 是一个部署的 .js 文件,有问题的有问题的函数是 codeAddress()。与 codeAddress() 类似的代码可以在我可以找到的其他地方在线使用,因此它必须与调用它的情况有关。鉴于地图显示得很好,并且我可以放置标记,我的期望是我的会话很好。这让我感到困惑:(有谁知道“错误”可能来自什么??
var map;
var marker;
var geocoder;
function placeMarker(location) {
if (!marker) {
marker = new google.maps.Marker({
position: location,
map: map
});
} else {
marker.setPosition(location);
}
map.setCenter(location);
var field = document.getElementById("portCreate:coordinate");
field.value = "POINT (" + location.lat() + " " + location.lng() + ")";
}
function initialize() {
var mapOptions = {
center : new google.maps.LatLng(55.761123, 13.084717),
zoom : 5,
mapTypeId : google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(
document.getElementById("map"), mapOptions);
google.maps.event.addListener(map, 'click', function(event) {
placeMarker(event.latLng);
});
setMarker(document.getElementById("portCreate:coordinate"));
geocoder = new google.maps.Geocoder();
}
function setMarker(field) {
if (field.value) {
var regex = /POINT.+?([-0-9\.]+).+?([-0-9\.]+)/;
var matches = regex.exec(field.value);
placeMarker(new google.maps.LatLng(Number(matches[1]), Number(matches[2])));
}
}
function codeAddress(address) {
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
} else {
alert("Geocode was not successful for the following reason: " + status + "\nFor address " + address);
}
});
}
function loadScript() {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://maps.googleapis.com/maps/api/js?key=<API key here>&sensor=false&callback=initialize";
document.body.appendChild(script);
}
window.onload = loadScript;