我对javascript很新(阅读:今天)。我有以下使用HTML5地理编码:
function geocode() {
var geocoder = new google.maps.Geocoder();
if (navigator.geolocation) {
var pos = geocodeWithHTML5();
alert('geocode - Lat: ' + pos.lat + ', Lng: ' + pos.lng);
}
}
function geocodeWithHTML5() {
navigator.geolocation.getCurrentPosition(function(position) {
var latlng = {
lat: parseFloat(position.coords.latitude),
lng: parseFloat(position.coords.longitude)
};
alert('navigator - Lat: ' + latlng.lat + ', Lng: ' + latlng.lng);
return latlng;
}, function() {
return false;
});
}
警报navigator
按预期工作。
警告geocode
会导致错误:Uncaught TypeError: Cannot read property 'lat' of undefined
。
我认为在return
前添加navigator.geolocation.getCurrentPosition
可能有用,但没有任何区别。
我确定我在这里做了一些明显错误的事情......
更新:已更改为此,但现在我收到两条提醒。第一个具有undefined
值,第二个具有正确的值:
function geocode() {
var geocoder = new google.maps.Geocoder();
// If browser supports HTML5 GeoLocation
if (navigator.geolocation) {
geocodeWithHTML5(function(pos){
alert('navigator - Lat: ' + pos.lat + ', Lng: ' + pos.lng);
});
} else {
// Alternative GeoLocation
}
}
function geocodeWithHTML5(fn) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: parseFloat(position.coords.latitude),
lng: parseFloat(position.coords.longitude)
};
fn(pos);
}, fn(false));
}