2012-10-09 51 views
0

我有一個數據庫中的Google地圖地址列表,我希望如果我給緯度&我的列表的地址之一的經度。所有的標記接近這一點。並且標記應該來自我的數據庫列表。在Google地圖中動態獲取標記

例如:如果我有一個20緯度的學校列表,其經度爲&,我希望所有接近學校的學校的名單A可能在5公里左右。所有的地址都存放在地圖中我的數據庫不是其他學校,它們也是谷歌地圖中的標杆。

我有什麼: 我在這,如果我通過了緯度經度&比它給人的名單接近這個point.but引腳來在地圖的腳本是由谷歌地圖給,我想的是,引腳應該來自我的數據庫。

下面是腳本,您可以在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.so我不需要創建他們已經是一個引腳地址的引腳。

Plz建議我該如何做到這一點。

+0

你可能想在這裏閱讀這篇文章:https://developers.google.com/maps/articles/phpsqlajax_v3 – duncan

+0

thnks ducan .. !!對我有用的鏈接,但我仍然很煩惱。無論如何,它使我更接近我的目標。 –

回答

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公里的所有引腳。

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');