[英]Looking for free, web-based map API recommendations for a future webapp [closed]
我正在为即将开始的Maps项目做一些研究,并且试图评估哪种Map API最适合该项目。 我已经与Google Maps Javascript 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.