原链接
运行测试平台:小强ROS机器人

open street map是一个开源的地图平台。网站http://www.openstreetmap.org/

网页程序的源代码在这里 https://github.com/openstreetmap/openstreetmap-website/

虽然官方有安装说明,但是由于说明的太过简略,很多关键地方没有说明,导致想要让程序在本地运行起来都很困难。下面就是我很费劲才摸索出的安装和运行方法。

以下都是以 Ubuntu 16.04 为例

安装依赖
sudo apt-get install ruby2.3 libruby2.3 ruby2.3-dev \
                     libmagickwand-dev libxml2-dev libxslt1-dev nodejs \
                     apache2 apache2-dev build-essential git-core \
                     postgresql postgresql-contrib libpq-dev postgresql-server-dev-all \
                     libsasl2-dev imagemagick
sudo gem2.3 install bundler
下载源代码
git clone --depth=1 https://github.com/openstreetmap/openstreetmap-website.git
ruby gems
cd openstreetmap-website
bundle install

这里最好先把ruby的源换成国内的,否则速度非常慢,换源的方法可以自己搜索一下

复制配置文件
cp config/example.application.yml config/application.yml
配置数据库
cp config/example.database.yml config/database.yml

sudo -u postgres -i
createuser -s <username>
exit

bundle exec rake db:create

psql -d openstreetmap -c "CREATE EXTENSION btree_gist"

cd db/functions
make libpgosm.so
cd ../..

psql -d openstreetmap -c "CREATE FUNCTION maptile_for_point(int8, int8, int4) RETURNS int4 AS '`pwd`/db/functions/libpgosm', 'maptile_for_point' LANGUAGE C STRICT"
psql -d openstreetmap -c "CREATE FUNCTION tile_for_point(int4, int4) RETURNS int8 AS '`pwd`/db/functions/libpgosm', 'tile_for_point' LANGUAGE C STRICT"
psql -d openstreetmap -c "CREATE FUNCTION xid_to_int4(xid) RETURNS int4 AS '`pwd`/db/functions/libpgosm', 'xid_to_int4' LANGUAGE C STRICT"

bundle exec rake db:migrate

测试一下
bundle exec rake test:db
配置

以上的步骤都是官方文档里的说明,如果你想要了解更多细节可以看这里

按照官方文档下面运行

bundle exec rails server

就可以在http://localhost:3000访问网站了。但是实际上并不可以。

你还要进行下面的步骤

  1. 编译assets
bundle exec rake assets:precompile

否则会报各种缺文件的错误

  1. 注册用户
    当你开始编辑的时候需要在本地的网站上注册用户。其中有邮箱的验证过程,然而本地的服务器是不会发邮件的,这样也就没办法认证。解决方法有两种,一种是改数据库里面的数据,设置用户为已认证。另一种就是,虽然没办法发邮件,但是邮件的内容会在终端输出来,把链接地址复制到浏览器里面就可以了。注意吧地址改成本地的。

  2. 申请用户token
    当你注册完成之后你会发现你没办法保存自己修改的地图。甚至无法打开地图编辑页面。会有各种create_token没有定义的错误。这是由于没有给自己本地的网站设置token的原因。
    在浏览器打开http://localhost:3000/user/randoms/oauth_clients/new其中的randoms要换成你自己注册的用户名。打开如下的界面

0_1499324670768_TIM截图20170706150411.png

名字可以随便输入,Main Application URL 写成 http://localhost:3000,当然如果你的地址不是localhost要根据自己的情况进行调整。把下面的选项全部勾上,点击注册就可以了。

注册完成之后会出现下面的页面

0_1499324858307_TIM截图20170706150730.png

这样我们就获得了Consumer Key

打开源代码中的config/application.yml文件
server_url的值修改成http://localhost:3000
oauth_key的值修改成刚才获得的Consumer Key
id_key的值修改成刚才获得的Consumer Key

保存修改然后运行

bundle exec rails server

就可以在本地使用了

最后再吐槽一下官方的文档,缺少的东西太多了。。。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐