L'API Google Maps (v3) ajout/mise à jour des marqueurs

EDIT: Ça fonctionne maintenant, mais ne charge pas si l'utilisateur ne permet pas ou ont des services basés sur la localisation. Voir accepté de répondre à un commentaire pour jsfiddle exemple.

J'ai regardé à travers quelques tutoriels et des questions, mais je ne peux pas tranquille comprendre ce qui se passe (ou dans ce cas, ne se passe pas). Je suis le chargement de ma carte lorsque l'utilisateur clique sur un lien. Cette charge de la carte avec les utilisateurs de l'emplacement actuel dans le centre, et un marqueur à la position. Cependant, tous les marqueurs à l'extérieur de la if (navigation.location) ne semblent pas en charge. Ci-dessous mon code actuel:

function initialize() {
//Check if user support geo-location
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var point = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
var userLat = position.coords.latitude;
var userLong = position.coords.longitude;
var mapOptions = {
zoom: 8,
center: point,
mapTypeId: google.maps.MapTypeId.HYBRID
}
//Initialize the Google Maps API v3
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
//Place a marker
new google.maps.Marker({
position: point,
map: map,
title: 'Your GPS Location'
});
});
} else {
var userLat = 53;
var userLong = 0;
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(userLat, userLong),
mapTypeId: google.maps.MapTypeId.HYBRID
}
//Place a marker
new google.maps.Marker({
position: point,
map: map,
title: 'Default Location'
});
//Initialize the Google Maps API v3
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
}
<?
for ($i = 0; $i < sizeof($userLocations); $i++) {
?>
var userLatLong = new google.maps.LatLng(<? echo $userLocations[$i]['lat']; ?>, <? echo $userLocations[$i]['long']; ?>);
new google.maps.Marker({
position: userLatLong,
map: map,
title:"<? echo $userLocations[$i]['displayName'] . ', ' . $userLocations[$i]['usertype']; ?>"
});
<?
}
?>
}
function loadMapScript() {
if (typeof(loaded) == "undefined") {
$("#showMap").css("display", "none");
$("#showMapLink").removeAttr("href");
$("#map").css("height", "600px");
$("#map").css("width", "600px");
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://maps.googleapis.com/maps/api/js?key=MY_API_KEY&sensor=true&callback=initialize";
document.body.appendChild(script);
loaded = true;
} else {
alert("Map already loaded!");
}
}

loadMapScript() est appelée lorsque l'utilisateur clique sur un lien. Le php pour boucle boucle par le biais d'un pré-créé un tableau avec toutes les informations.

Je devine que je ne comprends pas tout, comme lorsqu'si j'ai mis:

var userLatLong = new google.maps.LatLng(53, 0);
new google.maps.Marker({
position: userLatLong,
map: map,
title:"Title"
});

dans la console (Google Chrome), j'obtiens l'erreur:

Error: Invalid value for property <map>: [object HTMLDivElement]

Je n'ai pas, cependant, obtenez des erreurs, sinon. Toute aide serait grandement appréciée! 🙂

Comment loadMapScript() appelée?
Lorsque l'utilisateur clique sur un lien pour loadMapScript()

OriginalL'auteur Joseph Duffy | 2012-05-07