我正在學習谷歌地圖API,並堅持在這個問題,當我試圖將當前座標添加到數組。這裏是我的代碼:谷歌地圖API如何設置當前位置標記
var locations = [];
在初始化()我有:
function initialize() {
infowindow = new google.maps.InfoWindow();
var myOptions = {
zoom: 10,
mapTypeControl: true,
navigationControl: true,
}
map = new google.maps.Map(document.getElementById("map"), myOptions);
add_location('Place 1', 37.2846372, -123.3270422);
set_current_location();
set_markers(new google.maps.LatLngBounds(), map);
}
第一個標誌設置,而set_current_location()似乎並沒有工作。這裏是其餘的代碼:
// add new location to the locations array
function add_location(description, lastitude, longtitude) {
locations.push([description, lastitude, longtitude]);
}
// Set all the markers in the location arrays and bound/frame the map
function set_markers(bounds, map) {
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
bounds.extend(marker.position);
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
map.fitBounds(bounds);
}
// Get current location based on the IP Address
function set_current_location() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
var pos = new google.maps.LatLng(position.coords.latitude,
position.coords.longitude);
var myLat = position.coords.latitude;
var myLong = position.coords.longitude;
add_location('My location', position.coords.latitude, position.coords.longitude);
});
} else {
alert("Geolocation is not supported by this browser.");
}
}
任何人都可以幫助或給我一個提示嗎?我想將當前位置添加到位置數組,以便可以跟蹤我已添加的位置數。非常感謝。
在'getCurrentPosition'回調末尾調用'set_markers',而不是'initialize'。檢索用戶位置是一個異步過程,當初始化完成時,結果不可用。 –
我同意莫勒博士。我看到了同樣的事情。 getCurrentPosition()是一個在後臺執行的異步調用,因此在上面的代碼中不保證在調用set_markers()時getCurrentPosition()已完成。將set_markers()調用放在getCurrentPosition()的末尾可以保證用戶的地理位置將在標記放置在地圖上之前完成。 –