0

データに応じて、テーブルから情報を読み取り、マップにマーカーを配置する JavaScript を作成しようとしています (座標はそのテーブルに隠されています)。行ごとに、マップ上にマーカーが表示されます。

スクリプトは google-maps-apiv3 で書いていますが、Google から独立して OpenLayers に切り替えられるようにしたいです。私は OpenLayers に多くの時間を投資しませんでしたが、いくつかの例で見たマーカーは明らかに醜いです:S. 一方、google-maps には無料で使用できる制限と境界があります。

実装を置き換えることができるようにするには、JavaScript をどのように記述しますか? ビジネスロジック (テーブルからマップ + マーカー) を分離し、マップの実装から分離したいと考えています。どのファイルで、どのように実装をバインド/インポートしますか? JavaScript をテスト可能に保つ方法 (私は Jasmine+Testacular を使用しています)? 可能であれば、モックを使用します。

参考までに: 私は Java の専門家です。たぶん、私の OO の心はまだ解決策を見ていないのでしょう。

4

1 に答える 1

1

あなたは抽象化レイヤーについて話している。行う必要があるのは、マップに必要な機能を決定することです。

  • マーカー
  • 情報ウィンドウ
  • 地図

必要になることがわかっている追加機能は、リストに追加する必要があります。次に、アイテムごとに、ブリッジ パターンに従って抽象的な表現を作成します。たとえば、および/またはmapをカプセル化する抽象クラスがあります。google.maps.MapOpenLayers.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 に答える