(google/openlayers)地图的可交换实现
exchangeable implementations of (google/openlayers)maps
我正试图编写一个JavaScript,根据数据从表中读取信息并在地图上放置标记(坐标隐藏在该表中)。地图上每一行都会有一个标记。
我已经用google-maps-apiv3编写了脚本,但我想独立于谷歌,并希望能够切换到OpenLayers。我没有在OpenLayers上投入太多时间,但我在一些例子中看到的标记非常丑陋:S。另一方面,谷歌地图对免费使用有限制和界限。
您将如何编写JavaScript来替换实现?我想将我的业务逻辑(表到映射+标记)分离出来,将其与映射实现解耦。在什么文件上以及如何绑定/导入实现?如何保持JavaScript的可测试性(我使用Jasmine+Testacular)?如果可能的话,我会用嘲讽。
仅供参考:我是一个Java爱好者,也许我的OO头脑还看不到解决方案。
您谈论的是抽象层。您需要做的是确定地图所需的功能:
- 标记
- 信息窗口
- 地图
您知道需要的任何其他功能都应该添加到列表中。然后,对于每个项目,您将按照桥接模式创建一个抽象表示。例如,您将有一个抽象的map
类,它将封装一个google.maps.Map
和/或一个OpenLayers.Map
。
function MartinL.Map()
{
var map;
if(google && google.maps) //google maps api has been loaded
map = new google.maps.Map();
else
map = new OpenLayers.Map('map');
}
var myMap = new MartinL.Map();
这显然是一个过于简单的例子,但您要做的是将谷歌地图和OpenLayer地图实现封装在抽象层中。重构现有代码以仅使用抽象层,然后您可以随时切换库。
相关文章:
- 二进制数据的可移植hashCode实现
- 有哪些方法可以在html和javascript中实现持久,可共享的存储
- 使用jquery可交换地更改两个html输入表单值
- 使用可排序项实现轮班点击
- 在单元测试中实现逻辑,以缩短语法并提高测试代码的可重用性
- C#网格视图从动态创建的DataTable中实现可点击单元格
- 实现平移,同时在d3强制布局中保持节点可拖动
- Javascript 可拖动 我需要引用初始拖动的对象,以便我可以交换
- 如何实现可重用的回调函数
- 交换 2 个项目在可观察数组 - 挖空
- AngularJS与ng-map实现动态热图可视化
- 什么是实现可拖动分隔符的轻量级脚本/jQuery 扩展
- 通过使用 json 和 javascript 实现数据可视化
- 如何在淘汰.js中实现可计算的可观察量
- 需要 JS 依赖项覆盖以实现可配置的依赖项注入
- 可交换的CSS主题与jQuery事件处理程序
- 如何在jqueryui中实现可拖动对象的堆叠属性
- 乘法不是't是可交换的
- Jquery ui可排序不'不能正确交换
- (google/openlayers)地图的可交换实现