1

我正在尝试实现一个 php 服务,该服务将采用 a$_GET("LAT")和 a$_GET("LNG")并根据 Google StreetView API v3 JavaScript 验证它是否有效。如果是,则返回 OK 或 NOK。

我意识到实现这一点的 JS 代码是:

var latLng = new google.maps.LatLng(12.121221, 78.121212);
            streetViewService.getPanoramaByLocation(latLng, STREETVIEW_MAX_DISTANCE, function (streetViewPanoramaData, status) {
                if (status === google.maps.StreetViewStatus.OK) {
                    //ok
                } else {
                    //no ok
                }
            });

我无法将所有内容联系在一起,即 PHP 和 JS,这样就可以了。

谁能帮帮我吗?

谢谢

编辑1:

这是我想出的代码,但它不起作用:

<?php 
Header("content-type: application/javascript");
?>
<html>
    <head>  </head>
    <body onload="checkValid()">
        <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script>

        <script language="text/javascript">
        function checkValid() {
            var streetViewService = new google.maps.StreetViewService();
            var STREETVIEW_MAX_DISTANCE = 100;
            var latLng = new google.maps.LatLng(<?php $_GET("LAT") ?>,<?php $_GET("LNG") ?>);
            streetViewService.getPanoramaByLocation(latLng, STREETVIEW_MAX_DISTANCE, function (streetViewPanoramaData, status) {
                if (status === google.maps.StreetViewStatus.OK) {
                    alert('ok');
                } else {
                    alert('not');
                }
            });
            }

        </script>
    </body>
</html>
4

2 回答 2

1

如果你想用 JS 来验证 lat 和 lng 那么你需要把$_GET参数拿到 JS 里。就像是:

var LAT = '<?=isset($_GET['LAT']) ? $_GET['LAT'] : 91?>';
var LNG = '<?=isset($_GET['LNG']) ? $_GET['LNG'] : 181?>';

var latLng = new google.maps.LatLng(LAT, LNG);
streetViewService.getPanoramaByLocation(latLng, STREETVIEW_MAX_DISTANCE, function (streetViewPanoramaData, status) {
    if (status === google.maps.StreetViewStatus.OK) {
        //ok
    } else {
        //no ok
    }
});

我使用了一个简单的三元语句,询问是否GET可用,如果可用,则将其添加到 JS 变量中,如果它没有添加 Lat 和 Lng 范围之外的值。这将导致 Google Maps API 自动失败。

于 2013-06-21T19:35:43.580 回答
1

诚然,STREETVIEW_MAX_DISTANCE 可能会帮助您找到存在 panarama 的最近位置,代码工作如下,但它需要额外的算法来查找接近点

      var myLatLng=new google.maps.LatLng(44.293232,-68.294734);
      var streetViewService = new google.maps.StreetViewService();
      var STREETVIEW_MAX_DISTANCE = 1050;  //where we search nearest  panoram
      streetViewService.getPanoramaByLocation(myLatLng, STREETVIEW_MAX_DISTANCE, function (streetViewPanoramaData, status) {
        console.log(":1111111111111111111:",streetViewPanoramaData, status);
        if (status === google.maps.StreetViewStatus.OK) {
          // ok
      var panoramaOptions = {
        position: streetViewPanoramaData.location.latLng, //this is what we found !!!!
        pov: {
          heading: 34,
          pitch: 10
        }
      };

          var panorama = new google.maps.StreetViewPanorama(document.getElementById('map_pano'), panoramaOptions);
          map.setStreetView(panorama);
        } else {
          // no street view available in this range, or some error occurred
        }
      });
于 2021-10-27T06:07:43.563 回答