0

I have declared a local variable inside of getAddress.

When I try to access that variable inside a local function it falls outside its scope.

What am I doing wrong?

function getAddress(latlon, map)
{
    var data = "";
    $("#map-canvas").gmap3({
        marker: {
            latLng: latlon,
            options:{
                draggable:false,
            },
        },
        getaddress:{
            latLng: latlon,
            callback: function(results){
                data = results && results[1] ? results && results[1].formatted_address : "no address";
            },
        },      
    });
    console.log(data); // Outputs empty string
}
2
Contributors
13
Replies
37
Views
4 Years
Discussion Span
Last Post by singularity~
0

I have declared a local variable inside of getAddress.

Is this related to Google Map?

0

How does your div tag looks? Is this for mobile website or regular website?

0

I am using that example.

However I am wanting to use my local "data" variable past the function.

0

However I am wanting to use my local "data" variable past the function.

This line should be content:

content = results && results[1] ? results && results[1].formatted_address : "no address";

not this:

data = results && results[1] ? results && results[1].formatted_address : "no address";

You should read and used this format as your local data:

https://developers.google.com/maps/documentation/javascript/geocoding?hl=fr#GeocodingAddressTypes

I copy and paste the code here for you to see:

 results[]: {
 types[]: string,
 formatted_address: string,
 address_components[]: {
 short_name: string,
 long_name: string,
 types[]: string
 },
 geometry: {
   location: LatLng,
   location_type: GeocoderLocationType
   viewport: LatLngBounds,
   bounds: LatLngBounds
}
}
0

I've changed my variable back to content; however, that shouldn't matter because it's just a variable name. I understand the data structure of the Google Maps content. I'm trying figure out why my variable looses scope and what I can do to fix it.

0

I'm trying figure out why my variable looses scope and what I can do to fix it.

You modify the code from the link. The only thing I notice you took out a few lines.

I don't know what you did. You can't expect someone to fixed (figure out what you did).

The only way to fixed this issue you are having is to write down what changes you made.

I know the code from the link works so you added something to the code or didn't know how add the code or you change the format that it lost the variable.

Edited by LastMitch: grammer

0

Yes I did modify the code from the link, I need to complete a different task.
My problem has nothing to do with using that code or my code.
I am wanting to know why I am loosing scope and how to fix it.
I am having a programming languages issue.

Edited by singularity~

0

My problem has nothing to do with using that code or my code.

OK

I am wanting to know why I am loosing scope and how to fix it.

Then what is in

var data = " ";

why is it blank?

I also notice your callback function is not connected with the result(not binding).

Explain to me why is not connected(binding)?

if you have something like this:

data.setMarker = function(address) {
    var dataGMap = data;
    data.geocoder.geocode({'address' : address}, function(results, status) {
        dataGMap.map.setCenter(results[0].geometry.location);
        dataGMap.marker.setPosition(results[0].geometry.location);
    });
}

it will make sense.

But you never provide a code from the preivous post and you expect someone to read your mind to see figure out why?

0

I am intitalizing data to a empty string. That way I don't get a null reference.

I did not provide my code from a previous post.

0

This is a correct answer.

The ajax method run asynchronously, so the data will still be undefined after the function runs. To fix this I think you should add a "sucess" property to the object and assign it to a callback. Then within that callback you can print out data.

Luckally I posted this question on another site.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.