从何处开始使用地图应用程序

时间:2010-12-31 13:34:42

标签: map

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

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

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

我将非常感谢您提供给我的任何帮助

3 个答案:

答案 0 :(得分:4)

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

如果您想要嵌入式谷歌地图,那么显然JavaScript Google Maps API可能是最佳解决方案。如果您需要支持服务器端的其他功能,例如路线,您可以使用网络服务API:

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

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

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

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

一旦你有了合适的路径'以这种方式存储,编写各种各样的软件实现相对容易。

  1. 查看the imagemagick convert documentation for the -draw option以获取有关如何使用的示例 在你的上画一个png,jpeg或gif 来自存储的svg路径的服务器。
  2. Adam Hooper对如何处理客户端使用SVG的自定义地图有一些很好的想法: http://adamhooper.com/eng/articles/9
  3. 请注意,您不一定 需要使用SVG。 Here's an example地图上绘制的地图 使用ImageMagick的服务器,带有 在其上绘制的可突出显示的clickmap 通过浏览器,在哪里 突出显示由 jquery maphighlight插件,其中 使用canvas元素 支持和VML取而代之 Internet Explorer浏览器。所有的 这些层(ImageMagick, 客户端点击地图,和 客户端javascript突出显示) 用直线绘制 在点坐标之间,所以没有 这实际上是SVG,也可能是 更容易理解。看一看 在页面源码看看如何 点击地图,然后看看 maphighlight插件了解 发生了什么: http://davidlynch.org/js/maphilight/docs/

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

答案 1 :(得分:3)

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

您需要的只是free API key

修改:原始问题中的评论表明您要在现有地图上使用自定义叠加层。这也可以this example显示(参见custom overlays的文档)。

答案 2 :(得分:2)

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

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