javascript - 在 Google Maps API 的标记上显示位置信息

标签 javascript angularjs google-maps google-maps-api-3

我正在从事一个 AngularJs 项目,该项目包括在 Google map 上显示信息。我的例子在下面plunker .

我想通过点击标记得到的是 city 和 desc 字段。

Controller :

var cities = [{
    city: 'mourouj5',
    desc: 'This is the best city in the world!'

}, {
    city: 'New York',
    desc: 'This city is aiiiiite!'

}, {
    city: 'tokyo',
    desc: 'This is the second best city in the world!'

}, {
    city: 'Paris',
    desc: 'This city is live!'

}, {
    city: 'barcelone',
    desc: 'Sin City...\'nuff said!',

}];


angular.module('mapsApp', [])
    .controller('MapCtrl', function($scope) {


        var map = new google.maps.Map(document.getElementById('map'), {
            mapTypeId: google.maps.MapTypeId.TERRAIN,
            center: new google.maps.LatLng(40.0000, -98.0000),
            zoom: 2
        });


        var createMarker = function(info) {
            var geocoder = new google.maps.Geocoder();
            geocoder.geocode({
                    'address': info.city
                },
                function (results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        new google.maps.Marker({
                            position: results[0].geometry.location,
                            map: map,
                            title: info.city
                        });}
                    marker.content = '<div class="infoWindowContent">' + info.desc + '</div>';

                    google.maps.event.addListener(marker, 'click', function() {
                        infoWindow.setContent('<h2>' + marker.title + '</h2>' + marker.content);
                        infoWindow.open($scope.map, marker);
                    });
                    $scope.markers.push(marker);
                });
        }

        for (i = 0; i < cities.length; i++) {
            createMarker(cities[i]);
        }


    });

最佳答案

这是一个工作示例:

var cities = [{
    city: 'mourouj',
    desc: 'This is the best city in the world!'

}, {
    city: 'New York',
    desc: 'This city is aiiiiite!'

}, {
    city: 'tokyo',
    desc: 'This is the second best city in the world!'

}, {
    city: 'Paris',
    desc: 'This city is live!'

}, {
    city: 'barcelone',
    desc: 'Sin City...\'nuff said!',

}];


angular.module('mapsApp', [])
    .controller('MapCtrl', function ($scope) {

        $scope.markers = [];

        $scope.map = new google.maps.Map(document.getElementById('map'), {
            mapTypeId: google.maps.MapTypeId.TERRAIN,
            center: new google.maps.LatLng(40.0000, -98.0000),
            zoom: 2
        });

        $scope.infoWindow = new google.maps.InfoWindow({});

        $scope.createMarker = function (info) {
            var geocoder = new google.maps.Geocoder();
            geocoder.geocode({
                'address': info.city
            },
                function (results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                        var marker = new google.maps.Marker({
                            position: results[0].geometry.location,
                            map: $scope.map,
                            title: info.city,
                            content: '<div class="infoWindowContent">' + info.desc + '</div>'
                        });


                        google.maps.event.addListener(marker, 'click', function () {
                            $scope.infoWindow.setContent('<h2>' + marker.title + '</h2>' + marker.content);
                            $scope.infoWindow.open($scope.map, marker);
                        });
                        $scope.markers.push(marker);
                    }

                });
        }

        for (i = 0; i < cities.length; i++) {
            $scope.createMarker(cities[i]);
        }


    });
<script src="https://code.angularjs.org/1.3.14/angular.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js"></script>
<script src="http://maps.googleapis.com/maps/api/js?key=&sensor=false&extension=.js"></script>
<script src="http://rawgit.com/angular-ui/angular-google-maps/2.0.X/dist/angular-google-maps.js"></script>
<body ng-app="mapsApp" ng-controller="MapCtrl">
    <div id="map" style="width: 700px; height: 700px;"></div>
</body>
   

关于javascript - 在 Google Maps API 的标记上显示位置信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32231187/

相关文章:

javascript - 如何使用DataTables中的ajax返回的json数据并在每一行中都有一个表单

javascript - 查找子属性键值并返回父对象,如果值为真 LODASH

AngularJS 货币过滤器 : can I remove the . 00 如果金额中没有美分?

javascript - 评估点表示法中的字符串以从 View 中的对象获取相应的值

javascript - Angular.js : prettyPhoto URL redirected to default page mentioned in angular route

javascript - 使用菜单创建 Angular Material 导航栏

javascript - 如何在连接 JavaScript 句子时添加空格

javascript - Google map (带有纬度、经度的标记位置)

java - 如何使用 google map api 在基于 map 的应用程序上添加元素?

swift - 如何快速安装 Google-Maps-iOS-Utils?