代码之家  ›  专栏  ›  技术社区  ›  Idan

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

  •  7
  • Idan  · 技术社区  · 14 年前

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

    我在网络上搜索了基于地图的开发框架,发现其中有太多: 地理服务器、地图服务器、开放层、geoext、谷歌地图的API等。

    我不是一个经验丰富的Web开发(更多的是C++类的人),所以我需要一些非常简单的东西,虽然同时也很健壮。 此外,我需要一个免费的,不会有许可证问题的道路。

    首先,我只需要一些基本的功能,比如在我的网站上实时显示GPS数据。

    有经验的人能推荐一个吗?

    谢谢

    7 回复  |  直到 14 年前
        1
  •  5
  •   geographika    14 年前

    顾客

    我会选择Openlayers——这是一个开源的javascript客户端库,类似于GoogleMapsAPI或BingAPI。但是,Openlayers将使您不必担心任何许可问题,或者在源代码可用且可以修改的情况下更改API—Google/Bing/Yahoo API并非如此。但是,您可以将这些服务中的数据作为Openlayers中的层来使用,并在它们突然被广告填满或具有商业限制时将其丢弃。

    看看例子,看看是否有一个你可以用来做你的第一个测试应用程序。- http://openlayers.org/dev/examples/

    geoextjs是在另一个javascript框架extjs(也是开源的)之上构建的,用于Openlayers的额外工具和小部件的集合。extjs主要用于构建用户界面——数据输入表单、网格等,使用javascript在浏览器中显示。

    如果您正在寻找树结构来打开和关闭层以及其他更高级的UI小部件,那么geoextjs是值得研究的。

    服务器

    如果只显示点,那么可以在Web服务器上创建动态kml或geojson,并在Openlayers中引用它。有各种语言的库可供您构建。python已经成为地理空间技术中的一种关键语言,并且拥有可以编写脚本的geojson库。

    geoserver和mapserver都是服务器端的程序,允许您使用符号、标签等从数据库中提供空间数据。如果您有许多不同的数据集,那么值得花时间设置它。

    McServer是用C++编写的,所以你尝试起来可能更容易——但是你可以在不需要任何专业服务器端软件的情况下逃脱,特别是如果你的数据由X、Y/Lon、LAT值组成,这些值可以很容易地绘制为点。

        2
  •  5
  •   dzida    14 年前

    首先(你说你需要实时显示GPS位置)我认为 Google Maps 是个不错的选择。这个解决方案有非常简单的API,社区支持在这里也是一个优势(我从来没有和其他东西相比过,但是我对GMAP及其教程/资源有很好的经验)。这是针对客户端的,对于服务器端,任何Web框架都应该完成这项工作(我使用django,它还具有dupport用于某些地理位置的功能——在后面的回答中提到)。

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

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

    我不知道是否有更专门的解决方案。

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

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

        3
  •  1
  •   Community basarat    7 年前

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

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

        4
  •  1
  •   JohnnyJP    14 年前

    我用Bing地图做手机。主要是因为它的速度快,并且为英国提供了比谷歌地图更好看的地图、3D模型和卫星视图。

    我也有一些问题,谷歌改变他们的服务,以提供一些增强和它打破了我的应用程序,至少在必应API有一个更兼容的考虑,现有的应用程序。不是说我不喜欢谷歌地图,我喜欢。这是我的后备服务……

    我从这两个供应商生成地图,必应作为主要,谷歌次要…这意味着,如果一个离线的不工作,这发生了,我的用户仍然可以使用我的应用程序。

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

        5
  •  1
  •   Ian Turner    14 年前

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

        6
  •  1
  •   Bart    14 年前

    免费开放源代码: www.openstreetmap.org网站,

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

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

    应用程序编程接口: http://wiki.openstreetmap.org/wiki/OpenLayers

        7
  •  0
  •   Tim Santeford    14 年前

    虽然它仍然是草稿, 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支持 地理定位
    • Opera:支持 每夜构建
    • Safari:支持 即将推出iPhone的Safari 浏览器。
    • Internet Explorer: 实验支持可从 IE8。