私は、plotting marker
またはpolylines
のような操作を行うマップを使用するプロジェクトに取り組んでいます。構造体複数のマップサービスプロバイダーをサポートするためのangularjsコード
機能はうまくいきますが、私は複数のマップサービスプロバイダを使用する上で難題に直面しています。
オープンレイヤーを使用して同じセット操作を実行したいと考えています。そのためには、コントローラーやビューのようなすべての場所で変更する必要があります。さらに、私は必要なフォーマットでコントローラにデータを送るサービスを持っています。
しかし、クライアント側で異なるマップサービスプロバイダの抽象レイヤーを作成する方法がわかりません。
私は、コントローラ
内のすべてのマップ関連のロジックは基本的に私は変化の最小数と乗数サービスプロバイダを切り替えるに役立ついくつかのガイドラインと提案を探していました。
は私のコントローラのコードに従う:
taxiFleetControlPanel.controller("overviewController", function ($scope,$location,sensorService,appService,nodeService,settingService,$timeout,$rootScope,instanceService,assetApiService) {
//google maps
function initMap() {.....}
function addMarker(){.....}
function addpolyLines(){....}
//openlayer maps
function openlayerInitMap() {.....}
function openlayerAddMarker(){.....}
function openlayerAddpolyLines(){....}
if there is requriment to use openalyer map the i will comment initMap(); in the same controller
funtion init(){
initMap();
//openlayerInitMap()
}
init();
})
はそれを行うには良い方法はありますか?
他にも多くの従属機能がありますが、シンプルさを維持していません。
私は次のアイデアを試してみました:
は、私はできませんよ二つの異なるコントローラを書いて、ルートでコントローラを変更が、1つのコントローラで行われた変更は、私は、文字通り他に方法の同じセットをコピー&ペーストするかどうかクリーンコードを維持するため
注:アプリケーションは、Googleマップ、openalyers、リーフレットのような複数のサービスプロバイダをサポートすることができます。
が、私は私のコントローラは、すなわちパラメータに基づいて、オーケストレーターとして機能するようにしたいあなたに感謝:ここ
は、あなたがこれを実現したい方法ですコントローラ、またはGoogleマップの場合は、別の機能のセットをコントローラが選択し、それに対応するものを探してください –