2017.6.5
2017.6.6

Googleマップに複数のマーカーを表示する(angular-google-maps)

AngularJSのGoogleマップ用ライブラリ「angular-google-maps」を使って、複数のマーカーを地図上に表示する方法です。ライブラリを使うために必要なものについては、「WebサイトにGoogleマップを埋め込む」の記事を確認して下さい。

目次

  • コード
  • 動作確認
  • 参考リンク

コード

関係ない箇所については極力削除しているので、適宜、補完して下さい。

◆html


<ui-gmap-google-map center="map.center" zoom="map.zoom" options="map.options" ng-if="map">
    <ui-gmap-marker ng-repeat="marker in markers" coords="marker.coords" options="marker.options" idkey="marker.id">
    </ui-gmap-marker>
</ui-gmap-google-map>

◆javascript


myApp.controller('exampleCtrl', function ($scope, uiGmapGoogleMapApi) {
    uiGmapGoogleMapApi.then(function(maps) {
        var data = [
            { lat: 35.681167, lng: 139.767052, title: "東京駅" },
            { lat: 35.693318, lng: 139.749885, title: "日本武道館" },
            { lat: 35.685175, lng: 139.7528, title: "皇居" }
        ];
        
        $scope.map = { 
            center: { latitude: data[0].lat, longitude: data[0].lng }, 
            zoom: 13,
            options: {
              mapTypeId: google.maps.MapTypeId.ROADMAP
            } 
        };
        
        $scope.markers = [];
        for (var i = 0; i < data.length; i++){
            $scope.markers.push({
                id: i,
                coords: { latitude: data[i].lat, longitude: data[i].lng },
                options: { title: data[i].title }
            });
        }
    });
});

「mapTypeId」には「ROADMAP」以外に「HYBRID」「SATELLITE」「TERRAIN」といったものが設定可能です。

マーカーのoptionsに設定した「title」は、地図上に表示されたマーカーにカーソルを合わせると表示されます。

ライブラリに「ui-gmap-markers」という複数マーカーに対応したディレクティブがありますが、うまく動作させることができなかったので、ng-repeatで「ui-gmap-marker」ディレクティブを複数作成するようにしています。

動作確認

参考リンク

AngularJS】関連記事