排序标记在谷歌地图根据用户的位置
sorting marker in google map according to user location
我有一个事件列表,我显示为地图上的标记(其web应用程序/网站),我想只显示事件在一定距离(10公里)从用户当前位置所以,我怎么能结合这2
//User Location
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(
function (position) {
var currentLatitude = position.coords.latitude;
var currentLongitude = position.coords.longitude;
// alert ("Latitude"+currentLatitude+"Longitude"+currentLongitude);window.mapServiceProvider(position.coords.latitude,position.coords.longitude);
// console.log(position);
}
);
}
//List of location from the Db.
var markers = @Html.Raw(Json.Encode(Model.UpcomingLectureGigs));
//Set All merkers on the map
window.onload = function (a) {
var mapOptions = {
center: new window.google.maps.LatLng(window.markers[0].Latitude, window.markers[0].Longitude),
zoom: 12,
mapTypeId: window.google.maps.MapTypeId.ROADMAP
};
var infoWindow = new window.google.maps.InfoWindow();
var map = new window.google.maps.Map(document.getElementById("dvMap"), mapOptions);
for (var i = 0; i < window.markers.length; i++) {
var data = window.markers[i];
var myLatlng = new window.google.maps.LatLng(data.Latitude, data.Longitude);
// console.log(data.Latitude, data.Longitude);
var marker = new window.google.maps.Marker({
position: myLatlng,
draggable: true,
animation: google.maps.Animation.DROP,
get map() { return map; }
});
(function (marker, data) {
window.google.maps.event.addListener(marker,
"click",
function (e) {
infoWindow.setContent(data
.Venue +
" " +
data.Genre.Name +
" " +
data.DateTime.toString("dd/mm/yy"));
//.toISOString().split("T")[0]);
// .format('MM/DD h:mm');
infoWindow.open(map, marker);
});
})(marker, data);
};
};
您可以使用几何库来计算用户位置与标记之间的距离(以米为单位)。
https://developers.google.com/maps/documentation/javascript/reference球形
筛选标记的代码快照可能类似于
var markers_filtered = markers.filter(function(marker, index, array) {
var myLatlng = new window.google.maps.LatLng(marker.Latitude, marker.Longitude);
return google.maps.geometry.spherical.computeDistanceBetween(userLatLng, myLatlng) < 10000;
});
for (var i = 0; i < markers_filtered.length; i++) {
//Your stuff here
}
你应该在加载Maps的JavaScript API时添加libraries=geometry参数
https://developers.google.com/maps/documentation/javascript/geometry相关文章:
- 获取用户位置并将坐标保存在数据库中
- Phonegap通过WiFi和移动网络而非GPS获取用户位置
- 谷歌地图:使用自定义标记显示当前用户位置
- 如何在地图上显示用户位置以及我的标记
- 如何使用“地图”在谷歌地图上显示用户位置;onclick”;作用
- 将 JavaScript 与 GWT 结合使用来获取用户位置,但变量不会被传递
- 在表单中提交用户位置
- 如何在脸书 API 中获取用户位置和用户家乡
- 如何使用jQuery或JavaScript从用户位置返回3个最近的位置
- 现在允许 GPS 时获取用户位置
- 如何使用谷歌地图跟踪用户位置和路线
- 如何使用 IP 地址 + 地理位置获取用户位置 Asp.Net.
- 使用Facebook Javascript SDK访问用户位置数据
- 转换特定日期&基于用户位置的时间到utc日期&时间
- 返回离用户位置(地理位置)最近的3个位置,并列出这些位置
- 地理定位api没有给出准确的用户位置
- JS-Can'找不到用户位置
- 为locationpicker.jquery.js设置当前用户位置
- 获取用户位置时,应用程序是科多瓦android应用程序的背景
- Jquery谷歌地图用户位置