我正试图设计一个新的应用程序,允许用户在自定义地图(办公室,大学计算机等)上查看他/她当前的位置。 但实际上我脑子里有几个问题(我之前没有设计过这种应用程序)。 我很好奇:

  • 我如何绘制自己的地图,它的最佳选择是什么? 有任何我需要关注的格式,有什么规格吗?
  • 一旦我有我的自定义地图。 如何将全球定位系统映射到本地位置?
  • 什么是在地图上缩放的技巧? 只是具有更多或更少信息的不同层,这些层会根据用户需求而变化?
  • 如果要在地图上标记某些特定点,如自助餐厅,老板办公室等,我该怎么做?

很抱歉,如果我的问题太多泛化和愚蠢,但我真的需要一些关于这个主题的线索,因为我不知道如何尽可能地设计这种应用程序。 我们不想重新发明轮子。

我将非常感谢您为此应用程序提供的任何帮助

#1楼 票数:4 已采纳

您可以采用多种方法来创建地图应用程序。 您使用哪一个取决于您要支持的功能集,以及您希望在产品上维护的控制程度。

如果你想要一个像嵌入式谷歌地图的东西,那么很明显JavaScript Google Maps API可能是最好的解决方案。 如果您需要从服务器端支持更多功能,例如路线,则可以使用Web服务API:

http://code.google.com/apis/maps/documentation/webservices/index.html

另一方面,如果您基本上需要一个区域的可缩放地图,您可以使用从数据库中绘制的标记和边框来定义该区域,并且您希望完全自定义控制此图像,而无需依赖Google地图的数据或品牌,那么你可以很容易地在客户端或服务器上或两者上构建可伸缩的映像。

首先,您需要一组点坐标来绘制地图。 这些可以从绘制矢量图形时由Adobe Illustrator等程序生成的SVG派生而来。 因此,您可以在Illustrator中绘制自己的地图,并使用生成的svg创建地图。 在这种情况下,您将不得不阅读SVG并了解如何使用它。 Raphael.js是一个优秀的库,提供跨浏览器兼容的SVG处理。 如果您的地图属于熟悉的区域(例如国家/地区),则可以在网络上找到它的SVG坐标。 您可以从维基百科上的此文件中获取要映射的国家或地区的数据子集开始。

一旦有了一组定义地图区域的坐标,就可以将它们保存在一个配置文件中,该文件可以根据需要由应用程序从磁盘读入内存。 以散列的形式保存这些数据很方便,其中每组键值对存储单独的svg“路径”或形成闭合形状的点坐标集。 例如,这些可能代表一个州的县。

一旦以这种方式存储了适当的“路径”,编写各种各样的软件实现就相对容易了。

  1. 查看有关-draw选项的imagemagick convert文档,以获取如何从存储的svg路径在服务器上绘制png,jpeg或gif的示例。
  2. Adam Hooper对于如何处理客户端使用SVG的自定义地图有一些很好的想法: http//adamhooper.com/eng/articles/9
  3. 请注意,您不一定需要使用SVG。 以下是使用ImageMagick在服务器上绘制的地图示例 ,浏览器在其上绘制了一个可突出显示的点击地图,其中突出显示由jquery maphighlight插件处理,该插件使用支持它的canvas元素和其上的VML。 Internet Explorer浏览器。 所有这些层(ImageMagick,客户端点击映射和客户端javascript突出显示)都是使用在点坐标之间绘制的直线构建的,因此这些都不是SVG,并且可能更容易理解。 查看页面源以查看如何绘制点击地图,然后查看maphighlight插件以了解发生了什么: http ://davidlynch.org/js/maphilight/docs/

第三种选择 ,如果您需要支持更多类似谷歌地图的功能,但想要在不使用叠加层的情况下添加自己的地图数据,则需要实施一些Open Street Maps应用程序。 如果您转到openstreetmap.org,找到要自定义的区域,然后单击顶部的编辑选项卡,您可以根据需要编辑您所在区域的地图。 这将编辑Open Street地图服务的所有用户的地图数据。 然后,您可以从http://openlayers.org/获取openlayers javascript,从您可以自由编辑的Open Street Maps数据中呈现您网站上的地图。 另请参阅OpenStreetMap Wiki,它会告诉您有关OpenStreetMap运动的更多信息。

#2楼 票数:3

如果您不想重新发明轮子,请不要尝试这样做:使用Google Maps API ,添加一些标记,然后就完成了。 缩放包括在内。 他们有一些示例来指导您,并且有大量关于使用的知识。

您只需要一个免费的API密钥

编辑:您在原始问题中的评论表示您要在现有地图上使用自定义叠加层。 这也是可能的, 如此示例所示(请参阅自定义叠加层的文档)。

#3楼 票数:2

为了不重新发明轮子(这绝对是一个好主意),地图本身的大部分工作已经完成 最简单的方法是将Google地图集成到您的应用程序中。 解决您的个人观点:

  1. 您不必绘制自己的地图。 他们已经存在了很多。 除非您要求自己绘制室内设施地图并绘制这些地图? 在这种情况下,您打算如何从硬件角度来解决这个问题? GPS无法正常工作。
  2. 您需要一块提供GPS坐标的硬件。 从那里,您可以调用API来绘制它。
  3. 已经完成了。
  4. 调用API。 只需提供API的位置(地址,GPS,无论你有什么)。 当然,GPS会更准确。 但我非常确定地理定位服务是API的一部分,您可以在本地存储坐标,如果它们不准确,可以手动调整它们。

如果我在这里偏离你的实际想法,请告诉我。 当然,“地图”含糊不清。

  ask by rfders translate from so

未解决问题?本站智能推荐:

1回复

在Windows Phone 8应用中使用地图

我正在为Windows Phone 8创建一个持续跟踪用户位置的应用程序。 当应用完成跟踪位置时,用户的活动会使用折线显示在地图上。 我现在想在地图上显示某些景点以及折线。 我已经尝试了以下代码: 但是,这将显示一个新地图。 我需要将景点与多义线放在同一张地图上。 谁能帮我这个
1回复

通过GUI使用地图

我正在做一个作业,我们必须使用GUI映射来进行简单的“国家和首都”搜索。 用户输入“国家/地区”和“首都”,然后按“添加”按钮,然后将其添加到地图中。 添加后,他们可以在搜索框中搜索国家/地区。 提示我应该使用Map实例存储值,并为该实例国家命名。 用户在搜索字段中输入要搜索的国家/地区
2回复

在Android应用中使用地图时暂停MediaPlayer

我正在使用地图构建具有大约40种声音的音板。 (上一个线程) 如果将应用程序移至后台(来电或类似内容),是否有人知道暂停Mediaplayer重启的好方法? 我在这方面还很新,所以可能很简单。 感谢任何可以提供帮助的人。 地图=新 HashMap(); ma
2回复

在Coffeescript中使用地图

我不确定javascript / coffeescript具有哪种地图功能,但是假设我将Java地图转换为适当的格式,我可以使用coffeescript做类似的事情 其中getValue将是我的coffeescript中定义的一个函数,其功能等同于 编辑:我有一个Java标记,因
5回复

使用地图代替矢量

我正在扩展一个已经存在的C ++代码。 其中一个类成员是另一个类对象的矢量类型: 其他模块通过许多序列迭代器使用此类及其成员。 现在,在扩展代码的同时,我需要向Link类添加一个名为linkID的成员,并使用该linkID查找/访问我的“ Link”对象。 问题:我不会通过遍历
2回复

正确使用地图的方法

每当我声明一个地图对象时,我总是在声明,getter和setter上收到以下警告。 我的声明是: 该地图正在获取我存储在以前的Struts2 Action中的当前会话信息,并将它们传递给通用Java对象。 我用来存储它的代码包含在下面,以给出我正在做的事情的更多上下文。
1回复

使用地图不会导致NPE

考虑一下: 我期待NPE,因为顶点尚未初始化。 至少我期待一个错误,因为Map是抽象的并且我正在处理一个对象。 有人可以照亮这里吗? 编辑: 我有一个包含main()的Main类; 在main()中,我正在调用World.init(); 该代码经过简化以提高可读
1回复

在方案中使用地图

我创建了一个名为电影满意的过程: 这就是我所说的程序。 电影标题=汽车。 我们的电影数据库是电影的数据库。 它从数据库(电影名称,导演,制作日期和演员)开始返回有关电影的大量信息。 如何仅返回电影标题而不是整个列表? 这是当前返回的内容: