2012-03-27 3 views
0

Ich habe eine Rückruf-URL, dass ich die Lat und Lng ziehe, um als Markierungen auf einem Google Maps anzuzeigen. Ich stelle sie in ein Array, aber ich denke, ich muss sie aufteilen, damit Google Maps sie verstehen kann.Google Maps, übergeben in einem Array von Lat und Lng für Marker?

function jsonData(){ 
     $.ajax({ 
      url: https://api.foursquare.com/v2/users/self/checkins?oauth_token=FUKXDJRWIB0AQ2MQUKUEUSB3KW2TMYKUMFGYLYUHBBH14CQ0&v=20120126, 
      cache: false, 
      dataType: 'json', 
      success: function(results) { 
       var lat; 
       var long; 
       var paths = []; 
       for(var i = 0; i < results.response.checkins.items.length; i++) { 
        var lat = results.response.checkins.items[i].venue.location.lat; 
        var long = results.response.checkins.items[i].venue.location.lng; 
        var pathDetails = lat +"," + long; 
        paths.push(pathDetails); 
       } 
       drop(paths); 
      } 
     }); 
    }; 


     var directionsDisplay; 
     var directionsService = new google.maps.DirectionsService(); 
     var map; 

     var neighborhoods = []; 

     var markers = []; 
     var iterator = 0; 

     function initialize() { 
       var myLatlng = new google.maps.LatLng(-25.363882,131.044922); 
       directionsDisplay = new google.maps.DirectionsRenderer(); 
       //var newyork = new google.maps.LatLng(40.7051157, -74.0088305); 
       var myOptions = { 
       zoom:1, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
       } 

       map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
       directionsDisplay.setMap(map); 

       var start = "new york, ny"; 
       var end = "los angeles, ca"; 
       var request = { 
       origin:start, 
       destination:end, 
       travelMode: google.maps.TravelMode.DRIVING 
       }; 
       directionsService.route(request, function(result, status) { 
       if (status == google.maps.DirectionsStatus.OK) { 
        directionsDisplay.setDirections(result); 
       } 
       }); 
      } 


      function drop(neighborhoods) { 
      console.log("Passing in data: " + neighborhoods); 
      for (var i = 0; i < neighborhoods.length; i++) { 
       setTimeout(function() { 
       addMarker(); 
       }, i * 200); 
      } 
      } 

      function addMarker() { 
      markers.push(new google.maps.Marker({ 
       position: neighborhoods[iterator], 
       map: map, 
       draggable: false, 
       animation: google.maps.Animation.DROP 
      })); 
      iterator++; 
      } 

$(document).ready(function() { 
    jsonData(); 
    drop(); 

}); 

Antwort

0

Ich habe etwa 4 Änderungen vorgenommen, was wichtig ist Nachbarschaften ist sowohl eine lokale Variable zu fallen (ich habe es in nx umbenannt) und die globale.

Siehe die Änderungen hier: http://jsfiddle.net/JVQTK/

0

Sie könnten ein Array von Arrays gespeichert werden, so dass jedes Array-Element der lat und lng getrennt haben würde, dann könnte man sich auf sie beziehen mag: arrayName[i][0] und arrayName[i][1].

Ich denke, es könnte auch funktionieren, wenn Sie die Punkte in eine Google LatLng verwandeln, und speichern Sie dann ein Array von diesen.

edit: für, wie Ihr Code jetzt ist, denke ich, die zweite Option wäre besser ... sonst, in Ihrer addMarker-Funktion sollten Sie die Werte nehmen, drehen sie in eine LatLng, und verwenden Sie diese als den Punkt

Verwandte Themen