0

I am trying to get user current location and pass those latitude/longitude coordinates to a map. The map will be used as a website background image.

I was partially successful with this code:

  navigator.geolocation.getCurrentPosition(showPosition);

    function showPosition(position) {
        xss =position.coords.latitude + 
        "," + position.coords.longitude; 


  }
var position = [32.5590985,35.8415147];

Now I want the value of xss to be inside this variable:

var position = [32.5590985,35.8415147];

basically I was trying to get the values from the function but without success.

How should I go about getting a value from inside the function?

HTML

<div id="googlemaps"></div>

JS Code

    navigator.geolocation.getCurrentPosition(showPosition);

    function showPosition(position) {
        xss =position.coords.latitude + 
        "," + position.coords.longitude; 


  }
var position = [32.5590985,35.8415147];

function initialize() {

    var myOptions = {
        zoom: 17,
        streetViewControl: false,
        scaleControl: false,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    map = new google.maps.Map(document.getElementById('googlemaps'),
        myOptions);


    latLng = new google.maps.LatLng(position[0], position[1]);

    map.setCenter(latLng);

    marker = new google.maps.Marker({
        position: latLng,
        map: map,
        draggable: false,
        animation: google.maps.Animation.DROP
    });


}
google.maps.event.addDomListener(window, 'load', initialize);

2 Answers2

1

How about you set the value of position variable from inside the showPosition function?

var position;

navigator.geolocation.getCurrentPosition(showPosition);

function showPosition(pos) {
  position = [pos.coords.latitude, pos.coords.longitude];
}
Arnelle Balane
  • 5,437
  • 1
  • 26
  • 32
  • didn't work out i try to added an `alert(position);` outside the function and it gave me undefinded but inside the function it work good and that's keep the same problem please take a look at the question again i added a demo code – Usf Ahmed Subehi Jun 06 '14 at 18:20
  • well, yeah , because `getCurrentPosition` is an asynchronous function and your `alert` statement gets executed before `getCurrentPosition` even finished :( – Arnelle Balane Jun 06 '14 at 18:51
  • Worked Perfect like charm Thank You – Usf Ahmed Subehi Jun 06 '14 at 19:14
0

Assuming navigator.geolocation.getCurrentPosition is asynchronous, this looks like a classic "Get results from an asynchronous request" problem. Please see https://stackoverflow.com/a/14220323/380487 for a detailed answer.

Community
  • 1
  • 1
nrabinowitz
  • 55,314
  • 10
  • 149
  • 165
  • i was trying to do such a thing `navigator.geolocation.getCurrentPosition(showPosition); function showPosition(position) { xss = "[" +position.coords.latitude + "," + position.coords.longitude +"]"; return xss; } var position = showPosition(position);` but it didn't work also – Usf Ahmed Subehi Jun 06 '14 at 18:46
  • Did you read the answer I linked to? If `navigator.geolocation.getCurrentPosition` is async, you will *never* be able to access values from inside the function in subsequent synchronous code. – nrabinowitz Jun 06 '14 at 19:00