寻找未来webapp的免费,基于Web的地图API建议

时间:2009-12-18 21:19:57

标签: javascript flash web-applications google-maps maps

我正在为即将开始的地图项目做一些研究,我正在尝试评估哪个Map API最适合这个项目。我已经广泛使用Google Maps Javascript API,但没有其他人。我的基本要求是,没有特别的顺序:

  • 免费:像啤酒一样,不一定像在演讲中一样。
  • 基于网络:Javascript,Flash / Flex,Silverlight等都可以。
  • 长期稳定:地图需要能够在浏览器中存在数天/数周/月,而不会逐渐消耗太多内存或其他系统资源。
  • 快速:地图绝对必须能够轻松地绘制数千个点(超过10k点)。每隔几秒我就需要更新一小部分(比如改变它们的颜色)。

我想看到的其他事情:

  • 灵活:Google Maps JS API就是一个很好的例子。基本上这会产生许多好东西,比如众多的第三方插件/扩展,并且在开发者的手中投入了大量的力量。
  • 记录良好并得到支持:再次,GMap JS API就是一个很好的例子。如果我要开始使用新的,丰富的API,我将需要能够找到答案。

截至目前,由于我熟悉它,我倾向于使用Google Map Javascript API。但是,Flash API是否能够更有效,更优雅地处理多个点的问题提示了这个问题。

那么,你有什么好的或坏的经历?根据我的标准,您会推荐哪种API?我确信那里有很好的我不知道的。

5 个答案:

答案 0 :(得分:2)

Google Maps Javascript API在您的第三和第四项要求方面存在问题,除非您做一些聪明的事情来解决问题。

(3)在编写糟糕的浏览器(例如MSIE)中,不断更新的Google Map将逐渐需要越来越多的内存。如果您小心删除不需要的对象上的所有引用和事件处理程序,那么在具有goof垃圾收集例程的浏览器中,我相信可以编写一个将运行数天的页面,但不能在MSIE中运行

workround是一个定时器,它定期完成页面的重新加载,在出路时使用GUnload()尽可能地整理内存。

(4)谷歌地图上的10,000名GMarkers是不可能的。在浏览器变得无法接受的速度之前,您可以使用的GMarkers数量和使用100%的CPU会因CPU功率和浏览器而异。有几百个GMarkers,MSIE6变得非常缓慢,谷歌Chrome将应对几千个。

通常的工作方式是创建像Google用于其GLayers的瓷砖。因为您每隔几秒钟就会更新它们,所以您必须使用服务器端图形库(如gd或ImageMagic)动态创建它们。使用GTileLayerOverlay在客户端上显示它们。使用GTileLayerOverlay.refresh()来调用更新。

浏览器将尝试缓存切片并使您尝试获取新切片失败。在您的情况下,最好的解决方案可能是安排您的服务器设置http标头,以指示浏览器永远不会缓存平铺图像。

它还提出了一个问题,即用于保存平铺图像的旧副本的内存是否正确释放。我从来没有听说过有关这方面的任何报道,所以在你开始开发项目之前,你应该做一些实验。

答案 1 :(得分:0)

我在项目中使用了OpenLayers。它是一个JavaScript API,但我们试图通过不完整/不支持的GWT包装器来使用它 - 这不是我推荐的经验。作为API本身,OpenLayers并不算太糟糕。它确实存在一些问题(例如消耗鼠标右键并将其转换为内存中的左键单击),但是正在积极开发中。我说它不像谷歌地图那么光滑,但它确实具有能够托管你自己的地图服务器的优势。

如果您愿意使用Java小程序,可以尝试使用GeoTools

答案 2 :(得分:0)

我非常喜欢谷歌地图,因为他们提供了非常全面的文档和资源,以及GMaps API的一般易用性。

此外,如果有人可以扩展(并优化代码以满足高需求),那就是谷歌。

答案 3 :(得分:0)

我在Google Maps API中讨论了使用answer的原因。

答案 4 :(得分:-1)

无论您选择哪种实施方式,如果要显示10k点,您可能需要使用服务器端群集。即使Flash API也无法处理那么多个点(非群集)。