我正在使用公司列表模板,並希望顯示公司在Google地圖中的位置。這是我第一次使用Google Maps API和我的代碼工作。但我知道我目前沒有按照正確的方式去做。谷歌地圖的地理編碼工作,但不是正確的方式
<script>
var geocoder;
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
var address = '<?php Here I give the address from my database by PHP ?>';
geocoder.geocode({ 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
}
});
var latlng = new google.maps.LatLng(-34.397, 150.644);
var mapOptions = {
zoom: 16,
center: latlng
}
map = new google.maps.Map(document.getElementById('big_map'), mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="big_map"></div>
我想指定mapOptions
center
由results[0].geometry.location
,但我不能得到它的工作。
正如我所說,我的代碼有效,但也許有人可以告訴我如何以更好的方式做到這一點,因爲我知道這不是100%正確的。
謝謝!
您當前的代碼是你能做的最好的,這是100%正確的。當您想要直接在地圖選項中使用地理編碼器返回的位置時,您必須在地理編碼回調中創建地圖實例。但結果將是相同的,除非地圖渲染完成需要更多時間。 –
好的,但那是我的嘗試。在地理編碼回調中創建地圖實例。但是如果你說渲染速度比較慢的話。然後我保持原樣。現在唯一不正確的是,我有一個來自澳大利亞的默認latlng。所以如果找不到地址,他會顯示澳大利亞地圖。或者我錯了? – Robbert
這是正確的,但你必須指定一個地圖中心,這是一個必需的屬性。當地理編碼失敗時,您必須改用fallback-location(但結果與我所說的相同)。當你想有另一個默認中心時,定義另一個默認中心。還可以使用地理定位來檢索用戶的地址並將其用作後備。但問題是一樣的,地理定位可能會失敗。 –