0

我正在尝试编写一个 JavaScript 来从表中读取信息并将标记放在地图上,具体取决于数据(坐标隐藏在该表中)。对于每一行,地图上都会有一个标记。

我已经用 google-maps-apiv3 编写了脚本,但我想独立于 google,并希望能够切换到 OpenLayers。我没有在 OpenLayers 上投入太多时间,但是我在一些示例中看到的标记非常难看:S。另一方面,谷歌地图有免费使用的限制和界限。

您将如何编写 JavaScript 来替换实现?我想将我的业务逻辑(表到地图+标记)分离出来,将其与地图实现分离。在什么文件上以及如何绑定/导入实现?如何保持 JavaScript 可测试(我使用 Jasmine+Testacular)?如果可能的话,我会使用嘲笑。

仅供参考:我是一个 Java 人,也许我的 OO 头脑还没有看到解决方案。

4

1 回答 1

1

你在谈论一个抽象层。您需要做的是确定地图所需的功能:

  • 标记
  • 信息窗口
  • 地图

您知道需要的任何其他功能都应添加到列表中。然后,对于每个项目,您将按照桥接模式创建一个抽象表示。例如,您将拥有一个map封装 agoogle.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();

这显然是一个过于简单的示例,但您要做的是将 google 地图和 OpenLayer 地图实现包装在您的抽象层中。重构您现有的代码以仅使用您的抽象层,然后您可以随时切换库。

于 2013-02-05T22:33:45.843 回答