2016-07-25 14 views
0

Ich benutze die Google Maps JavaScript API und this solution um die nächsten Punkte auf der Karte zu bekommen und sie anzuzeigen.Push Lat Lng von einer anderen Funktion in Street View Image API

"pt" Wert Beispiel:

38.5803844,-121.50024189999999 

Hier ist der Code:

function findClosestN(pt,numberOfResults) { 

    var closest = []; 

    for (var i=0; i<gmarkers.length;i++) { 
     gmarkers[i].distance = google.maps.geometry.spherical.computeDistanceBetween(pt,gmarkers[i].getPosition()); 
     gmarkers[i].setMap(null); 
     closest.push(gmarkers[i]); 
     } 
     closest.sort(sortByDist); 
     return closest; 
    } 

    function sortByDist(a,b) { 
     return (a.distance- b.distance) 
    } 

    function calculateDistances(pt,closest,numberOfResults) { 
     var service = new google.maps.DistanceMatrixService(); 
     var request = { 
      origins: [pt], 
      destinations: [], 
      travelMode: google.maps.TravelMode.DRIVING, 
      unitSystem: google.maps.UnitSystem.IMPERIAL, 
      avoidHighways: false, 
      avoidTolls: false 
     }; 
     for (var i=0; i<closest.length; i++) request.destinations.push(closest[i].getPosition()); 
     service.getDistanceMatrix(request, function (response, status) { 
     if (status != google.maps.DistanceMatrixStatus.OK) { 
      alert('Error was: ' + status); 
     } else { 

      var origins = response.originAddresses; 
      var destinations = response.destinationAddresses; 
      var outputDiv = document.getElementById('search_results'); 
      outputDiv.innerHTML = ''; 

      var splitLoc = pt; 
      splitLoc.split(","); 
      alert(splitLoc[1]); 

      photo_lat = splitLoc[0]; // lat 
      photo_lng = splitLoc[1]; // lng 

      profile_photo = "https://maps.googleapis.com/maps/api/streetview?size=600x300&location=" + photo_lat + "," + photo_lng + "&heading=151.78&pitch=-0.76"; 

      var results = response.rows[0].elements; 
      for (var i = 0; i < numberOfResults; i++) { 
      closest[i].setMap(map); 
      outputDiv.innerHTML += "<div class='location_list' style='background:url(" + profile_photo + ");'>" + "<div class='inner'>" + "<a href='javascript:google.maps.event.trigger(closest["+i+"],\"click\");'>"+closest[i].title + '</a><br>' + closest[i].address+"<br>" 
       + results[i].distance.text + ' appoximately ' 
       + results[i].duration.text 
       + "</div></div>"; 
      } 
     } 
     }); 

} 

In der letzten Funktion, calculateDistances, Ich versuche, die Koordinaten von der "pt" Variable zu spalten und dann führe das lat und lng in das Straßenansichtsbild api, um ein statisches Bild von jedem Ort auszugeben.

ich den Fehler:

Uncaught TypeError: splitLoc.split is not a function 

, wenn sie versuchen pt zu spalten. Meine Vermutung ist, dass pt nicht im richtigen Format ist, um geteilt zu werden, aber ich kann es nicht herausfinden. Wenn ich pt selbst alarmiere, zeigt es das lat und lng zusammen korrekt an, aber der Fehler tritt bei der Aufteilung auf.

Wie kann ich pt in separate lat lng teilen und dann übergeben?

+0

Dieser Fehler bedeutet, dass ' pt' ist wahrscheinlich keine Zeichenkette (warum erwartet man, dass es eine ist? In dem verlinkten Beispiel ist es ein 'google.maps.LatLng' Objekt). Geben Sie ein [minimales, vollständiges, getestetes und lesbares Beispiel] (http://stackoverflow.com/help/mcve) an, das das Problem darstellt. – geocodezip

+0

@geocodezip Ich weiß nun, dass pt den Startort darstellt, aber ich habe versucht, den lat/lng für jeden der "nächsten" Marker zu bekommen. Auf welches Objekt muss ich zugreifen? – cpcdev

+0

Das ist noch eine andere Frage. – geocodezip

Antwort

1

pt ist keine Zeichenfolge, sondern ein Objekt mit den Eigenschaften lat und lng. Wenn Sie jedoch alert (pt) aufrufen, wird das Objekt als String umgewandelt.

zum Beispiel

pt.toString() "(37,4418834, -122,14301949999998)"

Um lat/lng nur verwenden pt.lat oder pt.lng

+0

Danke für die Info! Ich habe versucht, pt.lat und pt.lng, aber sie geben nur Funktionen statt einen Wert – cpcdev

+0

Ok danke Sie müssen pt.lat() und pt.lng() verwenden – cpcdev