繁体   English   中英

为未来的webapp寻找免费的,基于Web的map API建议[关闭]

[英]Looking for free, web-based map API recommendations for a future webapp [closed]

我正在为即将开始的Maps项目做一些研究,并且试图评估哪种Map API最适合该项目。 我已经与Google Maps Javascript API进行了广泛的合作,但没有其他人。 我的基本要求不分先后:

  • 自由:像啤酒一样,不一定像演讲一样。
  • 基于Web:Javascript,Flash / Flex,Silverlight等都可以。
  • 长期运行且稳定:地图需要能够在浏览器中运行几天/几周/几个月,而不会逐渐消耗过多的内存或其他系统资源。
  • 快速:该地图绝对必须能够轻松绘制数千个点(超过1万个点)。 每隔几秒钟,我需要能够更新其中的少量(例如,更改其颜色)。

我想看到的其他内容:

  • 灵活:Google Maps JS API是一个很好的例子。 基本上,这会带来很多好处,例如大量的第三方插件/扩展,并在开发人员手中带来了强大的功能。
  • 有据可查并得到充分支持:再次,GMap JS API是一个很好的例子。 如果要开始使用新的功能丰富的API,则需要能够找到答案。

到目前为止,由于我已经熟悉Google Map Javascript API,因此我倾向于使用它。 但是,关于Flash API是否能够更有效,更优雅地处理许多问题的问题引发了这个SO问题。

那么,您有什么好的或坏的经历? 根据我的标准,您会推荐哪种API? 我敢肯定,还有一些我不知道的好东西。

Google Maps Javascript API的第三个和第四个要求有问题,除非您做一些聪明的事情来解决这些问题。

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

工作流程是使用一个计时器,该计时器定期执行页面的完全重新加载,并在输出的途中使用GUnload()来尽可能多地整理内存。

(4)不可能在Google Map上使用10,000个GMarker。 在浏览器变得异常缓慢并占用100%CPU之前可以使用的GMarker数量取决于您的CPU能力和浏览器。 几百个GMarkers使得MSIE6变得越来越慢,谷歌浏览器将处理几千个。

通常的工作流程是创建类似于Google用于其GLayers的图块。 由于每隔几秒钟就会更新一次,因此必须使用服务器端图形库(如gd或ImageMagic)动态创建它们。 使用GTileLayerOverlay在客户端上显示它们。 使用GTileLayerOverlay.refresh()调用更新。

浏览器将尝试缓存图块,并击败您获取新图块的尝试。 对于您而言,最好的解决方案可能是安排服务器设置http标头,以指示浏览器从不缓存切片图像。

这也引发了一个问题,即用于保存切片图像旧副本的内存是否被正确释放。 我从未听说过任何有关此问题的报告,因此您可能应该在进行项目开发之前进行一些实验。

我在一个项目中使用过OpenLayers 这是一个JavaScript API,但我们尝试通过不完整/不受支持的GWT包装器使用它-我不建议您使用这种体验。 作为一个API本身,OpenLayers还不错。 它确实有一些问题(例如,使用鼠标右键单击并将其从内存转换为鼠标左键),但是它正在积极开发中。 我想说它不如Google Maps那么漂亮,但是它确实具有能够托管自己的地图服务器的优点。

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

我喜欢Google Maps,因为它们提供了令人难以置信的详尽文档和资源,以及GMaps API的一般易用性。

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

我在这个答案中谈论了使用Google Maps API的原因。

无论您选择哪种实现,如果要显示10k点,都可能需要使用服务器端群集。 甚至Flash API也将无法处理那么多的单独点(非聚集点)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM