[英]google maps and reverse geocoding using html5API?
為什么這樣做:
function initCoords() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(initialize, locationError);
} else {
showError("Your browser does not support Geolocation!");
}
}
initCoords();
function locationError(){
alert('"Your browser does not support Geolocation!"');
}
function initialize(position) {
lat = position.coords.latitude;
lon = position.coords.longitude;
var acc = position.coords.accuracy;
geocoder = new google.maps.Geocoder();
// Debugging
console.log(position.coords);
console.log("Accuracy: "+acc+"\nLatitude: "+lat+"\nLongitude: "+lon);
var latlng = new google.maps.LatLng(lat,lon);
// Google Maps API
var myLatlng = new google.maps.LatLng(lat,lon);
var mapOptions = {
center: latlng,
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
}
function codeLatLng(position) {
lat = position.coords.latitude;
lon = position.coords.longitude;
var latlng = new google.maps.LatLng(lat, lon);
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setZoom(11);
marker = new google.maps.Marker({
position: latlng,
map: map
});
infowindow.setContent(results[1].formatted_address);
infowindow.open(map, marker);
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
codeLatLng();
總是返回這個:
Uncaught TypeError: Cannot read property 'coords' of undefined
在這條線上:
function codeLatLng(position) {
lat = position.coords.latitude;
enter code here
它向我顯示了地圖,而不是帶有地址的標記...我也嘗試過:codeLatLng(position);
渲染Google地圖后,將對CodeLatLng()的調用移到Initialize()函數中,並將其傳遞給position參數。 見上面的評論。
<html>
<head>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script>
function initCoords() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(initialize, locationError);
} else {
showError("Your browser does not support Geolocation!");
}
}
initCoords();
function locationError(){
alert('"Your browser does not support Geolocation!"');
}
function initialize(position) {
lat = position.coords.latitude;
lon = position.coords.longitude;
var acc = position.coords.accuracy;
geocoder = new google.maps.Geocoder();
// Debugging
console.log(position.coords);
console.log("Accuracy: "+acc+"\nLatitude: "+lat+"\nLongitude: "+lon);
var latlng = new google.maps.LatLng(lat,lon);
// Google Maps API
var myLatlng = new google.maps.LatLng(lat,lon);
var mapOptions = {
center: latlng,
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
codeLatLng( position );
}
function codeLatLng(position) {
lat = position.coords.latitude;
lon = position.coords.longitude;
var latlng = new google.maps.LatLng(lat, lon);
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setZoom(11);
marker = new google.maps.Marker({
position: latlng,
map: map
});
infowindow.setContent(results[1].formatted_address);
infowindow.open(map, marker);
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
</script>
</head>
<body onload="">
<div id="map_canvas" style="width: 400px; height: 400px;"></div>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.