我有一个模块,它使用谷歌地图制作地图,获取用户位置并在地图上放置标记。我想要一个自定义动画标记,所以我不得不在工厂初始化一个自定义的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工厂内调用我的地图初始化程序,以便在尝试构建类之前加载谷歌地图?
更新
正如评论中提到的那样,我可以在州/路线中使用解析器,但我试图让这个模块在可能的情况下不要求。