在角度工厂

时间:2016-09-15 01:21:20

标签: angularjs google-maps

我有一个模块,它使用谷歌地图制作地图,获取用户位置并在地图上放置标记。我想要一个自定义动画标记,所以我不得不在工厂初始化一个自定义的OverlayView类。我也希望异步加载地图,所以我创建了一个像this这样的工厂 处理加载谷歌地图。

我可以通过这样做加载地图:

initializer.gMapReady.then(function(){
    //call service method to make map
});

但我不知道如何在我的OverlayView工厂使用我的初始化程序,如下所示:

.factory('locMarker', function() {

    LocationMarker.prototype = new google.maps.OverlayView(); // This returns the error, google is not defined 

    function LocationMarker(opts) {
        this.setValues(opts);
    }

    LocationMarker.prototype.draw = function() {
           //
           // Code for drawing the marker on the map
           //
        }
    };
    return LocationMarker;
})

每当我加载页面时,地图显示正常,但我的自定义标记永远不会显示。我收到一个参考错误,谷歌未定义,指向行LocationMarker.prototype = new google.maps.OverlayView();如果我不懒加载谷歌地图,只需将脚本添加到索引页面,一切运行正常。

我有没有办法在locMarker工厂内调用我的地图初始化程序,以便在尝试构建类之前加载谷歌地图?

更新

正如评论中提到的那样,我可以在州/路线中使用解析器,但我试图让这个模块在可能的情况下不要求。

0 个答案:

没有答案