我正在尝试创建从用户当前位置到他选择的目标的路线。问题是,我不知道如何将用户Latitude / Longitude带入我的路线功能,如下所示:
getRoute = function(){
dir = MQ.routing.directions()
.on('success', function(data) {
//does some stuff with the routes data/directions. not important here
});
dir.route({
locations: [
{ latLng: { lat: USER LAT HERE, lng: USER LNG HERE } },
{ latLng: { lat: (poiCoordinates.lat), lng: (poiCoordinates.lng) } }
],
options: {
//not important as well
}
});
mqroute = MQ.routing.routeLayer({
directions: dir,
}).addTo(map);
};
当用户选择兴趣点(例如餐馆)并点击“查找路线”按钮时,调用上述功能。我可以访问Leaflet locate函数,但不知道如何组合它们并将用户地理位置放到上面的getRoute函数中。有什么方法可以做到吗?干杯!
答案 0 :(得分:1)
这只是一个我不知道你是否会有用的例子。
使用地理位置你可以找到传递给getRoute函数的用户纬度和经度。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
getRoute = function(latitude,longitude){
//.........
console.log(latitude,longitude)
dir.route({
locations: [
{ latLng: { lat: latitude, lng: longitude } },
{ latLng: { lat: (poiCoordinates.lat), lng: (poiCoordinates.lng) } }
],
});
//.......
};
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(success,error);
}else{alert("Geolacion not supported")};
function success(pos) {
var latx=pos.coords.latitude;
var longx=pos.coords.longitude;
getRoute(latx,longx)
};
function error(pos) {
alert('error')
};
});
</script>
答案 1 :(得分:0)
这对我有用:
点击&#34;从我的位置找到路线按钮到目标位置&#34;调用此函数:
createRoute = function(){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(getRoute);
} else {
alert("Geolocation not supported");
}
};
修改后的getRoute函数如下所示:
getRoute = function(position){
userLatitude = position.coords.latitude;
userLongitude = position.coords.longitude;
dir = MQ.routing.directions()
.on('success', function(data) {
//does some stuff with the routes data/directions. not important here
});
dir.route({
locations: [
{ latLng: { lat: userLatitude, lng: userLongitude } },
{ latLng: { lat: (poiCoordinates.lat), lng: (poiCoordinates.lng) } }
],
options: {
//not important as well
}
});
mqroute = MQ.routing.routeLayer({
directions: dir,
}).addTo(map);
};