我今天刚刚需要在我的角度应用程序中实现一个谷歌地图。由于我的实现需要一些非常简单的东西,我决定自己做这件事并创建一个简单的指令。我会将我的来源留在下面,以供任何可能觉得有用的人使用。
- 创建指令
- 创建 HTML
- 如果需要,可以选择通过指令/控制器传递坐标。
指示
angular.module('ngPortalApp')
.directive('googleMap', function () {
return {
template: '<iframe width="100%" height="350" frameborder="0" style="border:0"></iframe>',
restrict: 'E',
scope: {
pbcode: '='
},
link: function postLink(scope, element) {
var mapFrame = element.find("iframe");
if (scope.pbcode) {
mapFrame.attr('src', "https://www.google.com/maps/embed?pb=" + scope.pbcode);
}
else {
mapFrame.attr('src', '');
}
}
};
});
HTML
<div class="col-lg-12">
<google-map pbcode="'!1m0!3m2!1sen!2srs!4v1445332712674!6m8!1m7!1s34JkuBgIzmIJNmpFNThuUg!2m2!1d40.75816449978445!2d-73.98911289129973!3f175.51693470959802!4f7.069842517148402!5f0.7820865974627469'"></google-map>
</div>
这里的所有都是它的。请记住,谷歌查询字符串称为“pb”,这是您可以从谷歌获取的所有嵌入代码中使用的代码。您可以直接将其传递给您的指令,或者如果您需要通过您的控制器甚至通过指令本身。您可以在模板内的指令中设置任何 iframe 映射设置。
要在街景或地图视图之间切换,您只需发送相应的代码,无论您从哪个来源(db、json 等)获取它们。
对于上面的例子:
街道代码:
!1m0!3m2!1sen!2srs!4v1445332712674!6m8!1m7!1s34JkuBgIzmIJNmpFNThuUg!2m2!1d40.75816449978445!2d-73.98911289129973!3f175.51693470959802!4f7.069842517148402!5f0.7820865974627469
地图代码:
!1m18!1m12!1m3!1d755.5452773113641!2d-73.98946157079955!3d40.75804119870795!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0000000000000000%3A0x1952a6258d36ecc5!2sMcDonald's!5e0!3m2 !1sen!2srs!4v1445332854795
到目前为止还没有任何问题。这是一个小提琴:jsFiddle