Как использовать NG, нажмите и передать идентификатор в окне Google Map Pop, используя Angularjs?

0

У меня есть два магазина в базе данных, и я пытаюсь получить магазины в марке google map, указывая на то, что два магазина.i имеют ng-click в этом информационном окне, чтобы пропускать id здесь. ng-click не работает, есть идея передать id через ng -Щелкните

.controller('MapCtrl', [
    '$scope', '$http', '$location', '$window',
 
function ($scope, $http, $location, $window) {
    $http.get('****').success(function (data, dealers, response) {
        function initialize() {
            var serverData = data;
            $scope.locations = [];
            for (var i = 0; i < serverData.length; i++) {
                var modal = [
                data[i].Store_Name, data[i].S_Location.Latitude, data[i].S_Location.Longitude, i, 'images/arrow.svg', data[i].S_Address];
                $scope.locations.push(modal); 
            }
            console.log($scope.locations);
            //---------------------------------------------------------
            //console i am getting like this
            var locations = [
                ['nokia store', '12.971599', '77.594563', '1', 'images/arrow.svg.svg', '55a78953815356700bee698f'],
                ['samsung store', '12.9065534', '77.5774802', '2', 'images/arrow.svg.svg', '55a786d1815356700bee6982'], ];
            //----------------------------------------------------------
            var map = new google.maps.Map(document.getElementById('map'), {
                zoom: 13,
                center: new google.maps.LatLng(12.9667, 77.5667),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            });
            var infowindow = new google.maps.InfoWindow();
            var marker, i;
            for (i = 0; i < $scope.locations.length; i++) {
                //console.log($scope.locations[i][1]);
                marker = new google.maps.Marker({
                    position: new google.maps.LatLng($scope.locations[i][1], $scope.locations[i][2]),
                    map: map,
                    icon: $scope.locations[i][4],
                    animation: google.maps.Animation.DROP,
                });
                google.maps.event.addListener(marker, 'click', (function (marker, i) {
                    return function () {
                        infowindow.setContent('<div class="marker-box"><div class="marker-title">' + $scope.locations[i][0] + '</div><input type="button" value="Book Now" name="Book Now" ng-click="getid(' + $scope.locations[i][5] + ') "/></div>');
                        infowindow.open(map, marker);
                    }
                })(marker, i));
            }
            $scope.map = map;
        }
        $scope.getid(id) {
            console.log(id);
        }
    });
с 3 дней, я пытаюсь, я не могу решить. Помогите мне
Теги:
google-maps

1 ответ

0

Итак, в вашем коде:

google.maps.event.addListener(marker, 'click', (function (marker, i) {
                    return function () {
                        infowindow.setContent('<div class="marker-box"><div class="marker-title">' + $scope.locations[i][0] + '</div><input type="button" value="Book Now" name="Book Now" ng-click="getid(' + $scope.locations[i][5] + ') "/></div>');
                        infowindow.open(map, marker);
                    }
                })(marker, i));

ваша функция обратного вызова не запускается до тех пор, пока не будет нажата маркер. К тому времени, когда он нажал, область видимости, вероятно, не знает, что такое "i". Я предполагаю, что "i" становится $scope.locations.length+1.

Одна вещь, которую вы можете попробовать:

поместите вышеуказанный код во вторичную функцию, затем вызовите его из основного потока, а не запускайте его непосредственно из main thred. IE:

main code:{
//your code
for (i = 0; i < $scope.locations.length; i++){
   function_name(parameter 1, i);
}

function function_name= above code;

Обратите внимание, что вышеописанный код sudo, выполните его и попробуйте. Надеюсь, это решает.

  • 0
    я получаю значение. но когда нажимаю на кнопку, оно не передает значение
  • 0
    Вы пытались напечатать i до infowindow.setContent ('<div class = "marker-box"> <div class = "marker-title">' + $ scope.locations [i] [0] + '</ div> < input type = "button" value = "Забронировать сейчас" name = "Забронировать сейчас" ng-click = "getid ('+ $ scope.locations [i] [5] +')" /> </ div> '); ? Проверьте, имеет ли оно правильное значение
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню