在Google地图中动态获取标记

时间:2012-10-09 11:59:59

标签: php google-maps

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

例如:如果我有20个学校的列表及其纬度和数量经度和我想要靠近学校A的所有学校的名单可能大约5公里。所有的地址都在地图中,存储在我的数据库中,而不是其他学校也是Google地图中的图钉。

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

以下是您可以在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中获取数据库中的条目。所以我不需要创建它们已经是引脚地址的引脚。

Plz建议我该怎么做。

2 个答案:

答案 0 :(得分: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');

答案 1 :(得分: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 km的所有引脚。经度。