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" events="marker.events" 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 }
            });
        }
        
        var infowindow = new google.maps.InfoWindow();
        $scope.openMarkerInfo = function(marker, eventName, args){
            infowindow.setContent("<b>" + marker.getTitle() + "</b><br/>緯度:" + marker.getPosition().lat() + "<br/>経度:" + marker.getPosition().lng());
            infowindow.open($scope.map, marker);
        };
    });
});

上記のコードで表示できる情報ウィンドウの数は一つだけとなります。

情報ウィンドウのコンテンツにはHTMLタグが使用可能です。

動作確認

参考リンク

AngularJS】関連記事