我将根据用户的地址在谷歌地图上显示公司的位置。顺便说一句,输入地址不同,但每次只显示相同的地址。帮帮我,我的代码是关注的。谢谢。
<!DOCTYPE html>
<html>
<body>
<h1>My First Google Map</h1>
<div id="googleMap" style="width:100%;height:400px;"></div>
<script>
function myMap() {
var address = "<?php echo $address;?>";
var latitude = 0;var longitude = 0;
//alert(address);
var geocoder = new google.maps.Geocoder();
//var address = document.getElementById(address).value;
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
latitude = results[0].geometry.location.lat();
longitude = results[0].geometry.location.lng();
alert("Latitude: " + latitude + "\nLongitude: " + longitude);
} else {
alert("Request failed.");
}
});
var mapProp= {
center:new google.maps.LatLng(latitude,longitude),
zoom:5,
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCY- jGtLHPdttTiekXaSPncp6haCA3VeLU&callback=myMap"></script>
</body>
</html>
因为geocoder.geocode
是异步的,所以在使用之前你不会更新latitude
和longitude
,因此你的地图中心是0,0
在geocoder.geocode
的回调中初始化地图,如下所示
function myMap() {
var address = "<?php echo $address;?>";
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': address
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var mapProp = {
center: results[0].geometry.location,
zoom: 5,
};
var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
} else {
console.error("Request failed.", status);
}
});
}
注意:在上面的代码中,我使用
center: results[0].geometry.location,
设置地图中心,以避免从LatLng
对象解构lat / long,只是从检索到的坐标创建一个新的LatLng
对象 - 似乎是浪费的努力:p