私はちょうど今日、Angular アプリケーションに Google マップを実装する必要がありました。私の実装には非常に単純なものが必要だったので、これを自分で行い、単純なディレクティブを作成することにしました。役立つと思われる人のために、ソースを以下に残しておきます。
- ディレクティブを作成する
- 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>
それだけです。Google クエリ文字列は「pb」と呼ばれることを思い出してください。これは、Google から取得できるすべての埋め込みコードで使用されるコードです。これをディレクティブに直接渡すことも、必要な場合はコントローラーを介して、またはディレクティブ自体を介して渡すこともできます。テンプレート内のディレクティブで任意の 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