0

我在数据库中有一个谷歌地图地址列表,我希望如果我在列表中给出地址之一的纬度和经度。比所有标记都更接近这一点。标记应该来自我的数据库列表.

例如:如果我有 20 所学校的经纬度列表,并且我希望靠近学校 A 的所有学校的列表可能在 5 公里左右。所有地址都在地图中,这些地址都存储在我的数据库中,而不是其他学校也是谷歌地图上的别针。

我有什么:我有一个脚本,如果我通过纬度和经度,它会给出更接近这一点的列表。但是地图中的图钉是由谷歌地图提供的,我希望图钉应该来自我的数据库.

这是您可以在 Xampp、Wampp 等上尝试的脚本。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Google Maps JavaScript API v3 Example: Place Search</title>
    <script src="https://maps.googleapis.com/maps/api/js?sensor=true&libraries=places"></script>

    <style>
      #map {
        height: 400px;
        width: 600px;
        border: 1px solid #333;
        margin-top: 0.6em;
      }
    </style>

    <script>
      var map;
      var infowindow;

      function initialize() {
        var pyrmont = new google.maps.LatLng(22.716498,75.86812);//here you can pass the latitude & longitude.

        map = new google.maps.Map(document.getElementById('map'), {
          mapTypeId: google.maps.MapTypeId.ROADMAP,
          center: pyrmont,
          zoom: 15
        });

        var request = {
          location: pyrmont,
          radius: 500,
          types: ['store']
        };
        infowindow = new google.maps.InfoWindow();
        var service = new google.maps.places.PlacesService(map);
        service.search(request, callback);
      }

      function callback(results, status) {
        if (status == google.maps.places.PlacesServiceStatus.OK) {
          for (var i = 0; i < results.length; i++) {
            createMarker(results[i]);
          }
        }
      }

      function createMarker(place) {
        var placeLoc = place.geometry.location;
        var marker = new google.maps.Marker({
          map: map,
          position: place.geometry.location
        });

        google.maps.event.addListener(marker, 'click', function() {
          infowindow.setContent(place.name);
          infowindow.open(map, this);
        });
      }

      google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id="map"></div>
    <div id="text">

  </body>
</html>

我想要:我希望列表应该来自我的数据库,并记住我从谷歌地图 API 获取数据库中的条目。所以我不需要创建它们已经是引脚地址的引脚。

请建议我该怎么做。

4

2 回答 2

0

在单击/选择标记事件时,您可以将参数传递给“fetch_results”,即半径 20 米内的学校。

var $_METERS = 1000;  // to meters

$this->db->select('`your_school_table`.* CEILING((( acos( sin((' . $options['lat'] . ' * pi() / 180 )) *  sin(( `your_school_table`.`sc_latitude` * pi() / 180 )) + cos((' . $options['lat'] . ' * pi() / 180 )) * cos(( `your_school_table`.`sc_latitude` * pi() / 180 )) * cos(((' . $options['lng'] . ' -  `your_school_table`.`sc_longitude` ) * pi() / 180 )))) * 180 / pi() ) * 60 * 1.1515 * 1.609344 * ' . $this->_METERS . ' ) as distance');
于 2012-10-09T14:06:50.260 回答
0

在这里我找到了答案:我只需要编写查询以从特定引脚(纬度,经度)检索记录。

SELECT * , ( 3959 * ACOS( COS( RADIANS( $lat ) ) * COS( RADIANS( lat ) ) * COS( RADIANS( lng ) - RADIANS( $lng ) ) + SIN( RADIANS( $lat ) ) * SIN( RADIANS( lat ) ) ) ) AS distance FROM users HAVING distance <25

上述查询检索距离给定纬度和经度至少 25 公里的所有引脚。

于 2013-02-12T11:21:48.197 回答