问题标签 [osrm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 如何使用 OSRM 计算单源最短路径?
我最近一直在玩OSRM路由库。它似乎在解决最短路径问题方面非常有效。但是,我没有看到如何用它计算单源最短路径。更准确地说,给定一个固定起点,计算在给定距离限制内(例如,30 分钟内可到达)到所有位置的最短距离。
OSRM 在内部使用收缩层次结构。据我了解,在计算现实世界数据中两个位置之间的距离时,这种技术要优于 Dijkstra 算法。但是,对于我的问题,Dijkstra 的算法似乎更适合,不是吗?
OSRM 是否提供 API 来计算单源最短路径问题(有距离限制)?还有其他更适合此类问题的免费路由库吗?最好是对 OpenStreetMap 数据有良好支持的一种。
openlayers - 基本 OSRM 和 OpenStreetMaps / OpenLayers 问题
我需要一些帮助。我正在尝试设置一个基本的 OSRM / openlayers 地图。我已经能够创建一个带有地图和一些数据的 openlayers 应用程序。我还编译了自己的 OSRM 服务器版本并对其进行了测试以返回数据。
我现在想使用它。在四处搜索后,我看到人们提出复杂的问题,但没有一个基本的例子来说明如何使用它。我见过一些使用它的网站,但它们通常会最小化/混淆代码,很难对那里发生的事情有一个基本的了解。
我想做的两个主要事情是:
1)从OSRM服务器返回自行车/步行路线,据我了解,服务器只做汽车路线,但在几乎每个现场我看到他们都有步行和自行车道。这是如何实现的。
2)这应该是一个可能的。我需要一个最基本的例子来说明如何调用服务器函数,然后将其显示在地图上。
我知道我可以创建没有问题的 URL 调用,但它返回一个 .json 文件,我无法将其加载到我的应用程序中。显然它接受回调参数,但我不是 100% 确定如何处理它。此外,数据作为编码返回,我无法理解编码的折线问题。
所以我在这里想要的是一个基本示例或指向现有示例的链接:1)调用服务器 url 2)成功函数将数据添加到 openlayers 地图并显示它。
如果有人能指出我正确的方向或提供一些样品,我将不胜感激。
谢谢。
javascript - 为 OSRM 路由获取 JSON
我使用 cloudmade API 成功地在我的网站中实现了一个路由系统。我也想对 OSRM 路由系统 ( https://github.com/DennisOSRM/Project-OSRM ) 做同样的事情,但我在获取 OSRM json 输出时遇到了一些麻烦。
以下是从 cloudmade API 检索 json 的示例:
使用 $.ajax - http://jsfiddle.net/mayooresan/FhfVW/2/
使用 $.getJSON - http://jsfiddle.net/V3qgZ/72/
OSRM 的服务器 API 位于此处:https ://github.com/DennisOSRM/Project-OSRM/wiki/Server-api (查询的服务器位置位于http://router.project-osrm.org)。
将 url 与上面使用的相同坐标 ( http://router.project-osrm.org/viaroute?loc=51.500,0.100&loc=51.500,0.1001 ) 放入浏览器检索一个 json 文件。但无论我尝试将它与 $.getJSON 或 $.ajax 一起使用 - 使用回调,设置数据类型,我都无法获取 json 数据,这让我发疯了!我确信这是可能的,因为它记录在 API 中。
非常感谢任何帮助。
缺口
c++ - Boost -- 警告:找不到 libicui18n.so.48
我正在尝试在 Ubuntu 12.04 上构建最新(4.1)版本的Project-OSRM,并且出现与 Boost 相关的错误。
旧版本的 OSRM (3.9) 依赖于以包形式提供的 Boost 版本 (1.48),但新版本需要 Boost >= 1.49 的版本。
所以我将 Boost 1_55_0 从源安装到/usr/include/boost_1_55_0
并设置BOOST_ROOT
到这个位置。
制作 Project-OSRM 时出现以下错误:
libicuuc.so.48
并且libicui18n.so.48
似乎丢失了,但它们实际上存在于/usr/lib
.
以下是我的问题:
libicuuc.so.48
又是如何libicui18n.so.48
进入的/usr/lib
?它们是标准 Ubuntu 设置的一部分吗?- 这是他们正确的位置吗?如果是,为什么他们“找不到”?
- 如果没有,他们应该在哪里才能被发现?
- 经过一番谷歌搜索后,我设置
LD_DEBUG
为files
但它的输出对我没有多大帮助;不过我可以在这里生产。
google-maps - 使用 OSRM 计算两个邮政编码之间的距离
我一直在查看 OSRM 的距离计算,并且基本上有以下查询,它在英国的两个邮政编码之间进行距离计算。
服务器 API 文档(https://github.com/DennisOSRM/Project-OSRM/wiki/Server-api)似乎没有提到邮政编码,只有经度和纬度。
有谁知道 OSRM 中的谷歌地图查询相当于什么?此外,如果您对 FOSS 路由项目以及如何根据两个邮政编码检索距离有任何其他建议。
c++ - 在 Ubuntu 14.04 在 OSRM 上运行 make 时出现内存错误
我一直在尝试在 Ubuntu 服务器上安装开源路由机(OSRM),但是当我在构建文件夹中运行 Make 时,它停止在 21% 并给我以下错误:
[ 21%] 构建 CXX 对象 CMakeFiles/OSRM.dir/Library/OSRM_impl.cpp.o
虚拟内存耗尽:无法分配内存
make[2]: * [CMakeFiles/OSRM.dir/Library/OSRM_impl.cpp.o] 错误 1
make[1]: * [CMakeFiles/OSRM.dir/all] 错误 2
制作:* [全部] 错误 2
$
我已经在网上寻找了一个解决方案,并找到了关于更改 ulimit 和添加交换内存的建议,这些建议都对我不起作用。任何帮助将非常感激!
编辑:我联系了 OSRM 开发人员,结果发现我需要 2.5 GB 的内存。我只有 1 个。我通过按照以下说明添加交换文件解决了这个问题:http: //digitizor.com/2011/02/06/create-swap-file-ubuntu-linux/
javascript - 如何通过 javascript 设置 OSRM(开源路由机)路由标记?
我尝试了 OSRM 在线演示 [1] 和前端源代码 [2]
在那里我们可以在文本框上设置开始和设置位置。为了在起点和终点之间设置路线标记,我们需要单击路径并拖动到地图上所需的点。
无论如何使用JavaScript动态设置这些中间点?
linux - pthread_create not found, on "make" of OSRM-Project
I am trying to set up OSRM-project on my linux server, however am experiencing issues while doing so. I have the latest versions of the dependencies, and have also installed and setup pthreads: pecl pthread install
then adding it to php, and recompiling php.
Below is the information:
Centos 6 64bit, trying to set up OSRM-Project.
downloading soure, then:
Build fails on make:
Determining if the pthread_create exist failed with the following output: Change Dir: /var/www/html/osrm-backend/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTryCompileExec3544628293/fast" /usr/bin/gmake -f CMakeFiles/cmTryCompileExec3544628293.dir/build.make CMakeFiles/cmTryCompileExec3544628293.dir/build gmake[1]: Entering directory
/var/www/html/osrm-backend/build/CMakeFiles/CMakeTmp' /usr/local/bin/cmake -E cmake_progress_report /var/www/html/osrm-backend/build/CMakeFiles/CMakeTmp/CMakeFiles 1 Building C object CMakeFiles/cmTryCompileExec3544628293.dir/CheckSymbolExists.c.o /usr/local/bin/cc -o CMakeFiles/cmTryCompileExec3544628293.dir/CheckSymbolExists.c.o -c /var/www/html/osrm-backend/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c Linking C executable cmTryCompileExec3544628293 /usr/local/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec3544628293.dir/link.txt --verbose=1 /usr/local/bin/cc
main': CheckSymbolExists.c:(.text+0x16): undefined reference to
CMakeFiles/cmTryCompileExec3544628293.dir/CheckSymbolExists.c.o -o cmTryCompileExec3544628293 -rdynamic CMakeFiles/cmTryCompileExec3544628293.dir/CheckSymbolExists.c.o: In functionpthread_create' collect2: error: ld returned 1 exit status gmake[1]: *** [cmTryCompileExec3544628293] Error 1 gmake[1]: Leaving directory
/var/www/html/osrm-backend/build/CMakeFiles/CMakeTmp' gmake: *** [cmTryCompileExec3544628293/fast] Error 2File /var/www/html/osrm-backend/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c: /* */ #include
int main(int argc, char** argv) { (void)argv; #ifndef pthread_create return ((int*)(&pthread_create))[argc]; #else (void)argc; return 0; #endif }
Determining if the function pthread_create exists in the pthreads failed with the following output: Change Dir: /var/www/html/osrm-backend/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTryCompileExec4016411170/fast" /usr/bin/gmake -f CMakeFiles/cmTryCompileExec4016411170.dir/build.make CMakeFiles/cmTryCompileExec4016411170.dir/build gmake[1]: Entering directory
/var/www/html/osrm-backend/build/CMakeFiles/CMakeTmp' /usr/local/bin/cmake -E cmake_progress_report /var/www/html/osrm-backend/build/CMakeFiles/CMakeTmp/CMakeFiles 1 Building C object CMakeFiles/cmTryCompileExec4016411170.dir/CheckFunctionExists.c.o /usr/local/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create -o CMakeFiles/cmTryCompileExec4016411170.dir/CheckFunctionExists.c.o -c /usr/local/share/cmake-3.1/Modules/CheckFunctionExists.c Linking C executable cmTryCompileExec4016411170 /usr/local/bin/cmake -E cmake_link_script CMakeFiles/cmTryCompileExec4016411170.dir/link.txt --verbose=1 /usr/local/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create CMakeFiles/cmTryCompileExec4016411170.dir/CheckFunctionExists.c.o -o cmTryCompileExec4016411170 -rdynamic -lpthreads /opt/rh/devtoolset-2/root/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/ld: cannot find -lpthreads collect2: error: ld returned 1 exit status gmake[1]: *** [cmTryCompileExec4016411170] Error 1 gmake[1]: Leaving directory
/var/www/html/osrm-backend/build/CMakeFiles/CMakeTmp'
c++ - 在 Heroku 上设置 OSRM(开源路由机)
有没有人有幸在 Heroku 中构建和运行 OSRM 实例?我正在寻找一种基于云的解决方案,我可以在其中为我的移动应用程序提供服务。他们的 wiki 页面https://github.com/Project-OSRM/osrm-backend/wiki/Building-and-Running-OSRM-on-Heroku存在,但尚未写入任何信息。
任何有关如何在 Heroku 中设置它的帮助或提示将不胜感激。
谢谢!