开发基于位置/地图的网站

时间:2010-06-19 13:07:47

标签: google-maps geolocation gps

我想开始开发一个基于地图的网站。 起初我订购了一个调节Gps设备只是为了测试网站,后来我想使用Iphone的gps和其他手机设备。 所以我需要一些非常通用的东西。

我在网上搜索了基于地图的开发框架,并提出了太多的内容: 地理服务器,地图服务器,开放图层,Geoext,Google地图的api等。

我不是一个经验丰富的网络开发者(更像是一个c ++类型的人),所以我需要一些非常简单的东西,尽管同时又健壮。 而且,我需要一个免费的,并且不会出现许可问题。

首先,我只需要基本功能即可在我的网站上实时显示gps数据。

有人可以推荐一个吗?

由于

7 个答案:

答案 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并且它也支持某些地理位置 - 本答案稍后会提到)。

您可能需要构建遵循此规则的应用程序:

  1. 您的GPS设备会定期向您的服务器(Web应用程序)发送数据,数据存储在数据库中。
  2. 用户使用浏览器显示带有地图的数据(例如Google Map),该地图会在某个预定的时间间隔内定期更新位置(例如,ajax调用服务器以获取最新位置)。每次收到回复时,地图都需要更新。
  3. 我不知道这种情况是否有更专业的解决方案。

    如果您需要改进应用程序并添加一些功能,则需要考虑一些更复杂的地理框架。我在GeoDjango听到了一些积极的意见,主要是因为它可以很容易地与Django结合使用(这是一个非常容易学习的Web框架,它有很多功能)。

    我在这里提到的所有技术都是免费的。

答案 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

API:http://wiki.openstreetmap.org/wiki/OpenLayers

答案 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);

修改

它已在几个主流浏览器中得到支持:

  • Mozilla Firefox:Firefox支持 3.5及更高版本。
  • Chrome:支持Google Gears 地理位置API
  • Opera:支持 每晚构建
  • Safari:支持是 即将推出iPhone的Safari 浏览器。
  • Internet Explorer: 实验支持可从 IE8。