Hi all I need to show a google map in my site with my home like marker ( I use a store position for it) and centered in a user position. I try with:
<script>
var myCenter = new google.maps.LatLng('xxx');
var userCenter;
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
}
}
function showPosition(position) {
var latlon = position.coords.latitude + "," + position.coords.longitude;
userCenter=new google.maps.LatLng(latlon);
}
var marker;
function initialize()
{
var mapProp = {
center: userCenter,
zoom:15,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
marker=new google.maps.Marker({
position:myCenter,
});
marker.setMap(map);
var infowindow = new google.maps.InfoWindow({
content:"Casa"
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
if I don't use userCenter and use MyCenter the map works and show it centered in MyCenter.
The problem is the order of execution of the functions. You want to use userCenter before userCenter is available. This produces an error ( on var mapProp = {center: userCenter, ...} ) and so initialize stops working.
By the way, you never call getLocation(). A function that is only defined, does nothing. A function only does something if you call it somewhere.
(By the way 2: navigator.geolocation is not a Google service. It is a service that the web browser provides)
I put extra comment in the code