Google Map API, wie setzen Sie die Marke für die aktuelle Position

Ich Lerne google map API und stecken Sie dieses problem, wenn ich versuche, fügen Sie die aktuelle Koordinate in ein array. Hier ist mein code:

var locations = [];

In der initialize () - ich haben:

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);
}

Den ersten marker gesetzt, während die set_current_location() scheint nicht zu funktionieren. Hier ist der rest des Codes:

//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.");
    }
}

Kann jemand helfen oder mir einen Tipp geben? Ich möchte hinzufügen, um die aktuelle Position zu Orten array, so kann ich nachverfolgen, wie viele Orte, die ich Hinzugefügt haben. Ich danke Ihnen so sehr.

  • rufen Sie set_markers am Ende der callback von getCurrentPosition und nicht in initialize. Abrufen der Benutzer-Standort ist ein asynchroner Prozess, das Ergebnis noch nicht verfügbar ist, wenn die Initialisierung abgeschlossen ist.
  • Ich Stimme mit Dr. Molle. Ich sah die gleiche Sache. getCurrentPosition() ist ein asynchroner Aufruf ausgeführt wird, in den hintergrund, so gibt es keine Garantie in dem obigen code, die, wenn set_markers() aufgerufen wird, die getCurrentPosition() beendet wurde. Putting die set_markers () - Aufruf am Ende der getCurrentPosition() wird sichergestellt, dass die Benutzer die geolocation wird beendet, bevor der Marker auf der Karte platziert.
InformationsquelleAutor Kiddo | 2014-02-24
Schreibe einen Kommentar