我正在为即将开始的地图项目做一些研究,我正在尝试评估哪个Map API最适合这个项目。我已经广泛使用Google Maps Javascript API,但没有其他人。我的基本要求是,没有特别的顺序:
我想看到的其他事情:
截至目前,由于我熟悉它,我倾向于使用Google Map Javascript API。但是,Flash API是否能够更有效,更优雅地处理多个点的问题提示了这个问题。
那么,你有什么好的或坏的经历?根据我的标准,您会推荐哪种API?我确信那里有很好的我不知道的。
答案 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也无法处理那么多个点(非群集)。