Kan iemand mij iets meer uitleggen waarom onderstaande niet werkt

ik krijg als error dat centerPos is undefind . nu heb ik iets gelzen dat een var die binnen een andere functie aangemaakt word niet zichtbaar is buiten deze functie . maar hoe krijg ik nu de var centerPos in een andere functie om deze te gebruiken in mij map_options. ik snap de logica nog niet helemaal van javascript en functions .

hoop dat iemand mij kan helpen alvast bedankt
<?php
function initialize() {

mylocation = navigator.geolocation;
mylocation.getCurrentPosition(success, fail);
function success(position){
var myLat = position.coords.latitude;
var myLong = position.coords.longitude;

var coords = new google.maps.LatLng(myLat, myLong);

var centerPos = new google.maps.LatLng(52.132633, 5.2912659999999505);
}

function fail(position){
var centerPos = new google.maps.LatLng(52.132633, 5.2912659999999505);
}

var map_canvas = document.getElementById('map_canvas');

var map_options = {
center: centerPos,
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(map_canvas, map_options);

var point = new google.maps.LatLng(51.85773469999999, 4.564891699999976)
var marker = new google.maps.Marker({
position : point,
map : map
});
}

google.maps.event.addDomListener(window, 'load', initialize);
?>
Het woordje var weghalen.


var centerPos;

function success()
{
   centerPos = new google.maps.LatLng(52.132633, 5.2912659999999505);
}


hiermee wordt in de global space een var centerPos aangemaakt.

Als je binnen je functie "var" weglaat, dan verwijs je dus naar de var uit de bovenliggende variabelen-ruimte.

vergelijkbaar met in php in je functie middels Global een var binnen te halen. Maar dan automatisch.

is wel gevaarlijk op het moment dat je per ongeluk "var" vergeet en daarmee een globale var overschrijft
bedankt voor de uitleg,

heb nu onder staande maar krijg nog steeds undefined in mijn console

Ziet iemand wat er hier fout is ?

<?php
function initialize() {
var centerPos;

if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(getLocation, locationFail);
}
else {
}
//end check location

function getLocation(position){
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;

centerPos = new google.maps.LatLng(latitude, longitude)
}
function locationFail(){

}
var map_canvas = document.getElementById('map_canvas');
console.log(centerPos)
var map_options = {
center: new google.maps.LatLng(52.132633, 5.2912659999999505),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(map_canvas, map_options);

var point = new google.maps.LatLng(51.85773469999999, 4.564891699999976)
var marker = new google.maps.Marker({
position : point,
map : map
});
}
?>
ze heb dan ook nog steeds "var centerPos" IN je functie staan...
function initialize() {
var centerPos;

Dus alleen bekent in de function().
hier de var weggehaald maar krijg dan als ik de console.log op een andere plek zet undefined
<?php
function initialize() {

if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(getLocation, locationFail);
}
else {
}
//end check location

function getLocation(position){
var myLat = position.coords.latitude;
var myLng = position.coords.longitude;

centerPos = new google.maps.LatLng(myLat, myLng)
console.log(centerPos);
}
function locationFail(){

}
var map_canvas = document.getElementById('map_canvas');

var map_options = {
center: new google.maps.LatLng(52.132633, 5.2912659999999505),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(map_canvas, map_options);

var point = new google.maps.LatLng(51.85773469999999, 4.564891699999976)
var marker = new google.maps.Marker({
position : point,
map : map
});
}
?>
Ik heb geen idee wat je aan het doen bent.
Maar ik, als nog Javascript lerende, zie dat je een function aanroept met alleen de naam.
Terwijl de function een parameter verwacht.
var centerPos;

dat dient dus te staan voor regel 2 van je script. (ok andere plek kan ook, maar niet IN een functie)
wat ik wil is de waarde van de function getLocation(position)gebruiken in mijn volgende function

en die waarde gebruiken bij center van de google map.

welke functie bedoel je dan ?
navigator.geolocation.getCurrentPosition(getLocation, locationFail);

function getLocation(position)

Reageren