【问题标题】:Push Lat Lng from another function into Street View Image API将 Lat Lng 从另一个函数推送到 Street View Image API
【发布时间】:2016-11-29 09:14:42
【问题描述】:

我正在使用 Google Maps JavaScript API 和 this solution 获取地图上最近的点并显示它们。

“pt”值示例:

38.5803844,-121.50024189999999

代码如下:

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>";
          }
        }
      });

}

在最后一个函数calculateDistances中,我尝试从“pt”变量中拆分坐标,然后将lat和lng传递给街景图像api,以输出每个位置的静态图像。

我得到错误:

Uncaught TypeError: splitLoc.split is not a function

当试图拆分 pt.我的猜测是 pt 的拆分格式不正确,但我无法弄清楚。当我自己警告 pt 时,它会同时显示 lat 和 lng 正确,但错误发生在拆分时。

如何将 pt 拆分成单独的 lat lng 然后传入?

【问题讨论】:

    标签: javascript google-maps-api-3 split


    【解决方案1】:

    pt 不是字符串,而是具有 lat 和 lng 属性的对象。但是如果你调用 alert(pt) 它会将对象转换为字符串。

    例如

    pt.toString() “(37.4418834,-122.14301949999998)”

    要获取 lat/lng,只需使用 pt.lat() 或 pt.lng()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多