2016-08-19 43 views
1

我的工作涉及地图的使用它在哪里做的业务,如plotting markerpolylines的项目。结构angularjs代码支持多种地图servcie提供商

功能正常,但我面临使用多个地图服务提供商的困难。

我想使用开放层执行相同的设置操作。为此,我必须在所有地方进行更改,如控制器和视图。另外,我有一种服务,以所需的格式将数据送入控制器。

但我不知道如何创建在客户端不同的地图服务提供商的一个抽象层。

我都在控制器

基本上我在找一些指导和建议,这将有助于有改动的最小数量的倍增器服务提供商之间的切换相关的逻辑地图。

跟随我的控制器代码:

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(); 
}) 

有没有更好的办法做到这一点?

还有很多其他的依赖函数以及我没有把保持简单。

我试图后续想法:

写了两个不同的控制器,在该路由改变控制器,但如果任何变化在一个控制器由我会逐字复制粘贴同一套方法,其他我不能够保持一个干净的代码

注意:该应用程序可以支持多种服务提供商,如谷歌地图,开户人员和传单。

回答

0

如果我理解正确的话,要提取出一些逻辑,以便它可以在任何地方应用程序中使用?

如果是这样,我知道有两种方法可以实现这一点。首先,您可以创建一个封装逻辑的服务。这样你可以将它注入到每个需要使用它的控制器中,并且只需调用这些方法即可。

或者,您也可以在$根级别声明的功能,这样,它是在应用程序的任何地方的任何范围访问。

这里是你如何做到这一点:

https://stackoverflow.com/a/15026440/5349719

+0

谢谢你,我想我的控制器充当基础上的参数配器即,如果说的OpenLayers某些特定的功能应该由采摘控制器,或者如果它是谷歌地图应该由控制器拿起另一组特定的功能,并做相应的事情,这是寻找什么 –