我在数据库中有一个谷歌地图地址列表,我希望如果我给出纬度和数据其中一个地址的经度形成了我的列表。然后所有的标记都接近这一点。标记应该来自我的数据库列表。
例如:如果我有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建议我该怎么做。
答案 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的所有引脚。经度。