我想开始开发一个基于地图的网站。 起初我订购了一个调节Gps设备只是为了测试网站,后来我想使用Iphone的gps和其他手机设备。 所以我需要一些非常通用的东西。
我在网上搜索了基于地图的开发框架,并提出了太多的内容: 地理服务器,地图服务器,开放图层,Geoext,Google地图的api等。
我不是一个经验丰富的网络开发者(更像是一个c ++类型的人),所以我需要一些非常简单的东西,尽管同时又健壮。 而且,我需要一个免费的,并且不会出现许可问题。
首先,我只需要基本功能即可在我的网站上实时显示gps数据。
有人可以推荐一个吗?
由于
答案 0 :(得分:5)
<强>客户端强>
我选择OpenLayers - 这是一个开源JavaScript客户端库,类似于Google Maps API或Bing API。但是,OpenLayers将免除您的任何许可担忧,或者因为源可用而且可以修改API而更改 - 这与Google / Bing / Yahoo API不同。但是,您可以将这些服务中的数据用作OpenLayers中的图层,如果它们突然被广告填满或具有商业限制,则将其删除。
查看示例,看看是否有可用于制作首个测试应用程序的示例 - http://openlayers.org/dev/examples/
GeoExtJS是一个与OpenLayers一起使用的额外工具和小部件的集合,构建在另一个JavaScript框架ExtJS之上 - 也是开源的。 ExtJS主要用于构建用户界面 - 使用JavaScript的数据输入表单,网格等,以在浏览器中显示。
如果您正在寻找树形结构来打开和关闭图层以及其他更高级的UI小部件,那么GeoExtJS值得研究。
服务器强>
如果您只显示点数,那么您可以在Web服务器上创建动态KML或GeoJSON,并在OpenLayers中引用它。您可以构建所有语言的库。 Python已经成为地理空间技术中的关键语言,并且具有可以编写脚本的GeoJSON库。
GeoServer和MapServer都是服务器端程序,允许您使用符号系统,标签等来提供来自数据库的空间数据。如果您有许多不同的数据集,那么值得花时间设置它。
MapServer是用C ++编写的,因此您可能更容易尝试这一点 - 但是您可以在不需要任何专业服务器端软件的情况下离开,特别是如果您的数据包含X,Y / Lon,Lat值可以很容易地绘制为点。
答案 1 :(得分:5)
一开始(你说你需要实时显示gps位置)我认为Google Maps在这里是个不错的选择。这个解决方案有非常简单的API和社区支持也是一个优势(我从来没有与其他东西相比,但我对GMaps及其教程/资源有很好的经验)。这是针对客户端的,对于服务器端,任何Web框架都应该完成工作(我使用Django并且它也支持某些地理位置 - 本答案稍后会提到)。
您可能需要构建遵循此规则的应用程序:
答案 2 :(得分:1)
我建议您使用Google Maps API在浏览器中渲染地图。你可以找到我的理由in this answer。
当前版本的API支持getting geo-location information for mobile devices。
答案 3 :(得分:1)
我使用Bing Maps for mobile。主要是因为它快速,并为英国提供比谷歌地图更好看的地图,3D模型和卫星视图。
我也遇到了谷歌改变他们的服务以提供一些增强功能的问题,并且它破坏了我的应用程序,其中至少使用Bing API,现有应用程序考虑了更多的兼容性。不是我不喜欢谷歌地图,我这样做。它是我的备份服务..
我从两个提供商生成地图,Bing作为主要,Goole辅助......这意味着如果离线不工作,发生这种情况,我的用户仍然可以使用我的应用。
Heres a link to Bing Maps Dev on a WIndows Phone for example
答案 4 :(得分:1)
我会看一下Cloudmade。他们有许多API,免费选项,付费选项和使用OpenStreetMap,在许多地方,它是最准确的映射解决方案之一。
答案 5 :(得分:1)
免费,开源: www.openstreetmap.org,
你可以使用相同的技术构建你自己的服务器:
http://weait.com/content/build-your-own-openstreetmap-server
答案 6 :(得分:0)
虽然它仍处于草稿形式, HTML5 将支持Geolocation API。大多数主流浏览器和手持设备应该在不久的将来支持它,并且应该让想要独立于服务的解决方案的开发人员更轻松地生活。但是,如果您需要显示位置,您仍然需要像谷歌地图这样的地图服务。
function showMap(position) {
// Show a map centered at (position.coords.latitude, position.coords.longitude)
}
// One-shot position request.
navigator.geolocation.getCurrentPosition(showMap);
修改强>
它已在几个主流浏览器中得到支持: