0

I have xml file that contains the URLs for geocoding requests to Google. I want to iterate through the file, grab the URL (and later the site name...one step at a time), and send a Geocoding request to Google to get the lat and lng from the response. I am having problems with my $.ajax GET request. Can't the URL parameter just be a value in the array that contains my links? See my code below. Thank you for your help!

$(document).ready(
  function() {

    $locArray = new Array();
    $coorsArray = new Array();

    $.ajax({
        type: 'GET',
        url: 'data.xml', 
        dataType: 'xml',
        success: function(d){


            $(d).find('record').each(function(){

                var $record = $(this);
                var site = $record.find('site_name').text();
                var $maplink = $record.find('maplink').text();


                $locArray.push($maplink);           

             })

             $($locArray).each(
               function() {
                 $.ajax({
                    type: 'GET',
                    url: this,
                    dataType: 'xml',
                    success: function(d) {
                        $(d).find('location').each(function() {
                            var $location = $(this);
                            var $latcoor = $location.find('lat').text();
                            var $longcoor = $location.find('lng').text();
                            var $fullcoors = $latcoor + ", " + $longcoor;

                            console.log($latcoor);

                            $coorsArray.push($fullcoors);
                            //console.log($coorsArray);

                        })

                        $($coorsArray).each(
                          function(){
                            $('ul').append("<li>" + this + "</li>\n");
                          })

                    }
                 })
               }
             ); 



          } 


      });

});

2 Answers 2

3

You cannot initiate an AJAX request to a domain other than your own. This is to prevent XSS attacks. See Same Origin Policy.

If you want to get data from Google, either setup a proxy on your own domain which mirrors Google's response or due to request directly on your server.

Also, since you seem to geocode the same list of URLs, why not simply geocode them and cache the result?

Google supported JSONP previously but due to abuse, JSONP support was dropped.

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you. I will create a php script and see if I can get that to interact with the Geocoder. Basically, I want to mash-up data from my Quickbase database (using their api) and Google maps. Quickbase does have an PHP SDK which should help me with that part. Thanks for your help.
1

Using the V3 map api this seems pretty simple ... cross domain is not problem since google works with json requests ... here is a snippet from some recent code, it should give you some pointers where to look in the google map api.

var $search = jQuery('input#adresse');
var geocoder = new google.maps.Geocoder();
var Lat;
var Lng;
function addressSearcher(){
    if (geocoder) {
        inprogress = true;
        geocoder.geocode( { 
            address: $search.val()
        },function(results, status){        
            if ( status == google.maps.GeocoderStatus.OK
                 && results.length < 3
                 && results[0].types[0] == 'street_address' ){
                var loc = results[0].geometry.location;     
                Lat = loc.b;
                Lng = loc.c;
                $search.val(results[0].formatted_address);
            }
        })
    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.