使用 MapQuest Directions API 从用户地理位置创建路线

Posted

技术标签:

【中文标题】使用 MapQuest Directions API 从用户地理位置创建路线【英文标题】:Creating a Route from users geolocation using MapQuest Directions API 【发布时间】:2014-03-25 14:56:49 【问题描述】:

我正在尝试创建一条从用户当前位置到他选择的目标的路线。问题是,我不知道如何让用户纬度/经度进入我的路线功能,如下所示:

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 函数中。有什么建议吗?干杯!

【问题讨论】:

【参考方案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);
       elsealert("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>

【讨论】:

【参考方案2】:

这是为我做的:

点击“查找从我的位置到目标位置的路线按钮”调用此函数:

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

【讨论】:

以上是关于使用 MapQuest Directions API 从用户地理位置创建路线的主要内容,如果未能解决你的问题,请参考以下文章

“MapQuest”编码挑战 - 消除相互抵消的“方向”

如何使用 PHP 对 MapQuest 地理编码器进行批量地理编码?

使用Google Map或Mapquest在客户端/服务器应用程序上获取地图

MapQuest的单行地址

OSMDROID android 4.2:Mapquest:截至 2016 年 7 月 11 日,直接磁贴访问已停止

如何在 iOS 中解析 mapquest 地理编码 JSON