【问题标题】:developing location/map based web site开发基于位置/地图的网站
【发布时间】:2011-03-05 18:31:11
【问题描述】:

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

我在网上搜索了基于地图的开发框架,但想出的框架太多了: Geo server, Map server, Open layers, Geoext , Google maps's api 等等。

我不是一个经验丰富的网络开发人员(更像是一个 c++ 类型的人),所以我需要一些非常简单的东西,但同时又很强大。 此外,我需要一个免费的,而且以后不会有许可问题。

起初,我只需要在我的网站上实时显示 gps 数据的基本功能。

有经验的可以推荐一下吗?

谢谢

【问题讨论】:

    标签: google-maps geolocation gps


    【解决方案1】:

    虽然它仍处于草稿形式,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。

    【讨论】:

      【解决方案2】:

      客户

      我会选择 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 值可以很容易地绘制为点。

      【讨论】:

        【解决方案3】:

        免费,开源: www.openstreetmap.org,

        您也可以使用相同的技术构建自己的服务器:

        http://weait.com/content/build-your-own-openstreetmap-server

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

        【讨论】:

          【解决方案4】:

          一开始(你说你需要实时显示gps位置)我认为Google Maps是一个不错的选择。该解决方案具有非常简单的 API,社区支持也是一个优势(我从未与其他东西进行比较,但我对 GMaps 及其教程/资源有很好的经验)。这是针对客户端的,对于服务器端,任何 Web 框架都应该完成这项工作(我使用 Django,它还支持一些地理事物 - 在本答案后面提到)。

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

          1. 您的 GPS 设备会定期向您的服务器(Web 应用程序)发送数据,数据存储在数据库中。
          2. 用户使用浏览器来显示带有地图的数据(例如 Google 地图),它会在某个预定的时间间隔内定期更新位置(例如,ajax 调用服务器以获取最新位置)。每次收到响应时,都需要更新地图。

          不知道这个案例有没有更专业的解决方案。

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

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

          【讨论】:

            【解决方案5】:

            我会看看Cloudmade。他们有许多 API、免费选项、付费选项并使用 OpenStreetMap,这对于许多地方来说是最准确的地图解决方案之一。

            【讨论】:

              【解决方案6】:

              我在移动设备上使用 Bing 地图。主要是因为它速度快,并且为英国提供的地图、3d 模型和卫星视图比谷歌地图要好得多。

              我也遇到了 Google 更改他们的服务以提供一些增强功能的问题,它破坏了我的应用程序,至少在 Bing API 的情况下,为现有应用程序考虑了更多的兼容性。不是我不喜欢谷歌地图,我喜欢。它对我来说是一个备份服务..

              我从两个提供商生成地图,Bing 作为主要,Goole 次要...这意味着如果离线或无法正常工作,我的用户仍然可以使用我的应用程序。

              Heres a link to Bing Maps Dev on a WIndows Phone for example

              【讨论】:

                【解决方案7】:

                我可以推荐使用 Google Maps API 在浏览器中呈现您的地图。你可以找到我的理由in this answer

                API 的当前版本支持getting geo-location information for mobile devices

                【讨论】:

                  猜你喜欢
                  • 2014-04-20
                  • 2013-07-14
                  • 2015-06-25
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-01-05
                  • 1970-01-01
                  相关资源
                  最近更新 更多