jjzjj

手绘地图制作实例详解:如何从0到功能丰富的智慧导览系统

轻轻的烟雾 2023-03-28 原文
前面比较系统性地说了一些手绘地图制作的基础知识,现在这里以一个实际案例来详述一下如何从0开始,制作功能完善的智慧导览系统。
作者:轻轻的烟雾(z281099678)

这里讲解的案例为云阳龙缸景区。云阳龙缸景区位于重庆市云阳县,是国家级5A风景区、国家地质公园,被旅行者称为长江三峡最后的“香格里拉”,被户外爱好者誉为重庆版的“小华山”。

一、分析需求
手绘地图制作最基础的一步就是,分析需求。不管是供应商或者服务商,还是需求方,都应当尽量做好最深入、最本质的需求分析。
和云阳龙缸景区沟通需求的过程,相对比较顺畅。双方团队都体现了自身的专业水准,相互理解也比较容易。例如当对方闻及景区内的部分道路在地图上无法导航怎么办,我们给的解决方案是自己通过工具采集路线。对方即安排了相应的工作人员落实相应工作。另外在720全景拍摄过程中,也派专人全程陪同引导,现场沟通需求和讲解景点特色及注意事项。
双方诚恳态度的和务实的作风,是有效沟通的放大器。其实这一点,适用于任何的合作,而不仅限于手绘地图系统的建设。
二、手绘地图的制作
如《景区手绘地图的绘制流程》所述,最基础的准备工作(包括地图范围确定、地图底图的获取、资料和素材的沟通),这里便不再过多赘述。下面讲的是必要而详细过程。
1.手绘风格确认
手绘地图的风格确认,是至关重要的步骤。这在《景区手绘地图的绘制流程》也有比较详细的阐述。云阳龙缸景区属于典型的自然风景区,而且是具有非常的名气的大型景区,因此在沟通过程中,我们首先排除了卡通等不适合的风格。
然后又因为云阳龙缸景区是典型的山地地型。因此,最终确定了自然结合写实的风格。这样既能体现景区的地形地貌,又符合景区本身属性和定位。
2.导航线路采集和确认
在双方的沟通过程中发现,部分导航线路在地图的底图上不存在,无法搜索和查看,导航更无从谈起,如其中多段步行道。
于是我们便采取人工采集路线的方式,对步行道的路线进行了采集。采集的路线经纬度,因为手机定位本身可能出现才偏差,存在很多异常点位。对于这些数据,我们又在后台人工做了清洗和纠偏。
3.景区地形的确认
云阳龙缸的山行具有显著的特点。我们的手绘师以卫星图为参考,对地型高度抽象化的同时,做了尽可能的还原。
最后确认的地型不管是山峰还是山谷,都贴合真实。而且得到非常良好的视觉效果,整片区域起伏有致,山峦犬牙交错。
4.地图上色
在地图的上色这一块,设计师采取的最关键的一点是,针对云阳龙缸景区里的山峰的阴阳面做了不同的光线效果。这样子调色之后,整个地型便有了非常强烈的立体感。
5.绘制景点
云阳龙缸的每个景点都非常具有特色,不同的点位有着完全不一样的景致。景区也提供了景点的实景图,因此我们设计师针对每个景点都做了符合其特点的抽象建筑。
绘制的人文建筑或自然景色,都是经过高度抽象而又符合实际的图标。这对手绘地图有着画龙点睛的效果。
6.添加图标及调优
最后在双方不断的沟通中,对地图做了大量的调优,添加了相应的点位名称和图标。最终完成了手绘地图的绘制工作。
三、手绘地图到电子地图的制作
手绘地图的绘制完成之后,便是制作成电子地图。一张静态的手绘地图,功能远远不能达到服务游客的效果,因此电子地图才是重点和核心。
1.手绘地图覆盖到地图平台
手绘地图文件通过系统切片,覆盖到地图平台上,得到最基础的电子地图。
电子地图具备放大缩小的功能,可以在公众号、小程序、浏览器等多个环境使用,也可以通过嵌入公众号、小程序,或者线下二维码,甚至其他推广媒体等多个渠道进入。
云阳龙缸景区区域的对角大致有四五公里,我们最初设计为地图的19级,因此绘制的手绘地图也比较大。
2.路线标注和实时导航
通过地图平台已有的线路,以及人工采集的补充线路,后台给景区内的线路都标注之后,便可在手机端实现实时导航功能。
游客在景区内的任意道路和地点,都可以在手绘地图电子系统上查找景点或者服务设施,并导航。手绘地图电子系统会实时获取、更新游客当前的位置,并以箭头图标指示游客当前的前行方向,且具有语音播报提醒。
实时导航、指示方向、语音播报,这是手机地图APP导航的标准功能,但是能移植到手绘地图电子系统上,目前极少。我们对此也是经过深入的研究和探索,才得以实现。
四、手绘地图的功能确定
手绘地图的电子系统是基本的骨架,而要使系统发挥价值,还需要丰富血肉。
1.点位分类的确定
地图上的点位,是非常基础的元素,是游客使用手绘地图电子系统的依托。
云阳龙缸的点位分类,大致分为一下几类:景点、游客中心、游览车、卫生间。当然,这并非是一成不变的。根据实际情况,景区可能会有一些变更的需求。
例如,某些时刻,可能会上架一些临时性的、活动性的点位。而对于点位的变更、增删,我们通过后台系统,都可以方便地实现。
2.全景的拍摄和集成
云阳龙缸景区还有另外一个需求,就是对每个点位拍摄720全景。我们摄影师在拍摄、处理完成后,便集成到了手绘地图系统。方便游客在使用手绘地图的同时,便捷地查看景区720全景。
3.线路推荐的确认
云阳龙缸景区范围大,景点多,因为线路推荐显得甚至重要。经过双方沟通,我们设置了推荐的游玩线路。给有需要的游客参考。
4.公告信息
地图还具备发布信息的功能。景区实时的活动、紧急的公告等信息,也可以通过后台发布,游客进入手绘地图后,第一时间便可查看。
5.咨询信息
地图还可配置景区的咨询信息、联系方式等内容。游客可以通过这些信息,更进一步深入的联系景区,了解咨询。
6.搜索功能
地图还具备搜索功能。因为手绘地图里内容繁多,因此搜索功能显得具有使用价值。通过关键词搜索,游客查找自己关注的、感兴趣的内容。
7.自动开启触发语音讲解功能
地图具备自动触发语音讲解的功能。游客可点击开关,开启此功能。
此功能是通过对游客的位置的更新,识别到游客接近景点之后,便自动触发景点的语音讲解。这个功能对于一些“懒人”很有意义,走到哪听到哪,而不需要每次自己动手播放语音讲解。
8.关联多个地图
系统还具备多个地图关联的功能。对于景区来说,可以和另外的景区进行联动。对于游客来说,也可更加方便查看其他景区的地图。
9.游客个人中心
地图具有个性化的游客个人中心。游客在对点位进行点赞收藏、打卡等操作之后,会形成自己的游玩记录。游客可以通过这些记录回顾自己的游玩过程,也可以分享推荐给自己的好友。
五、测试上线
最后双方对手绘地图以及电子地图系统进行全面的测试优化之后,便正式上线投入使用。
一个功能丰富的智慧导览系统就此完成。当然我们后续也会继续对系统进行不断的优化和升级。
 
 

有关手绘地图制作实例详解:如何从0到功能丰富的智慧导览系统的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  8. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  9. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  10. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

随机推荐