我正试图设计一个允许用户在自定义地图(办公室,大学校园等)上查看他/她当前位置的新应用程序。但实际上我脑子里有几个问题(我之前没有设计过这种应用程序)。我想知道:
很抱歉,如果我的问题太多泛化和愚蠢,但我真的需要一些关于这个主题的线索,因为我不知道如何尽可能地设计这种应用程序。我们不想重新发明轮子。
我将非常感谢您提供给我的任何帮助
答案 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路径,或一组形成闭合形状的点坐标。例如,这些可能代表一个州的县。
一旦你有了合适的路径'以这种方式存储,编写各种各样的软件实现相对容易。
convert
documentation for the -draw
option以获取有关如何使用的示例
在你的上画一个png,jpeg或gif
来自存储的svg路径的服务器。第三个选项,如果您需要支持更多类似谷歌地图的功能,但想要在不使用叠加层的情况下添加自己的地图数据,则需要实施一些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地图集成到您的应用程序中。解决您的个人问题:
如果我偏离你的实际想法,请告诉我。 “地图”当然是模糊的。