Подтвердить что ты не робот

Добавить маркер в Angular -Google-Maps

В настоящее время у меня возникают проблемы с добавлением маркера при нажатии на Карты Google. Я использую http://angular-ui.github.io.

Вот мой код: HTML:

<ui-gmap-google-map center='map.center' zoom='map.zoom' events="map.events">
  <ui-gmap-marker coords="map.marker.coords" idKey="map.marker.id"></ui-gmap-marker>
</ui-gmap-google-map>

И есть мой JS:

$scope.map = {
    center: {
        latitude: alat.value, longitude: alon.value },
        zoom: 15,
        streetViewControl: false,
        events: {
            click: function (map, eventName, originalEventArgs) {
                var e = originalEventArgs[0];
                var lat = e.latLng.lat(),lon = e.latLng.lng();
                $scope.map.marker = {
                    id: 1,
                    coords: {
                        latitude: lat,
                        longitude: lon
                    }
                };
                $scope.$apply();
            }
        }
    };

Я следил за API-интерфейсом Angular -Google-Maps, но я пока не совсем превосходен в API Карт Google. До сих пор я понял, что мое событие click действительно работает, но мой маркер не добавляется на карту. Помощь будет оценена.

4b9b3361

Ответ 1

Я создал fiddle. Вот HTML.

<div ng-app="main" ng-controller="mainCtrl">
    <ui-gmap-google-map center="map.center" zoom="map.zoom" draggable="true" events="map.events">
        <ui-gmap-marker ng-repeat="m in map.markers" coords="m.coords" icon="m.icon" idkey="m.id"></ui-gmap-marker>
    </ui-gmap-google-map>
</div>

Контроллер выглядит следующим образом.

angular.module('main', ['uiGmapgoogle-maps'])
.controller('mainCtrl', function ($scope) {

    angular.extend($scope, {
        map: {
            center: {
                latitude: 42.3349940452867,
                longitude:-71.0353168884369
            },
            zoom: 11,
            markers: [],
            events: {
            click: function (map, eventName, originalEventArgs) {
                var e = originalEventArgs[0];
                var lat = e.latLng.lat(),lon = e.latLng.lng();
                var marker = {
                    id: Date.now(),
                    coords: {
                        latitude: lat,
                        longitude: lon
                    }
                };
                $scope.map.markers.push(marker);
                console.log($scope.map.markers);
                $scope.$apply();
            }
        }
        }
    });
});

Ответ 2

Кажется, вам нужно указать $scope.map.marker.id одно значение init. В противном случае произойдет ошибка ниже.

gMarker.key undefined и ТРЕБУЕТСЯ!!