javascript - 谷歌地图信息窗口不起作用?

标签 javascript angularjs google-maps

我在这里附上了我的代码,我正在努力将值传递到信息窗口,但我收到 Uncaught TypeError: Cannot read property '0' of undefined 。 期待: 1.我想在信息窗口中显示值 2.当我点击按钮时它应该传递id值 我添加了 fiddle http://jsfiddle.net/cLADs/135/

<!DOCTYPE html>
<html>
<head>

      <script type='text/javascript' src="https://maps.googleapis.com/maps/api/js?key=&v=3.0&sensor=true&language=ee"></script>


  <style type='text/css'>
    #map-canvas {
    width: 500px;
    height: 500px;
}
  </style>




<script type='text/javascript'>//<![CDATA[
window.onload=function($scope,$compile){
var gmarkers1 = [];
var markers1 = [];
var infowindow = new google.maps.InfoWindow({
    content: ''
});

// Our markers
markers1 = [
    ['0', 'Madivala', 12.914494, 77.560381, 'car','as12'],
    ['1', 'Majestic', 12.961229, 77.559281, 'third','as13'],
    ['2', 'Ecity', 12.92489905, 77.56070772, 'car','as14'],
    ['3', 'Jp nagar', 12.91660662, 77.52047465, 'second','as15']
];

/**
 * Function to init map
 */

function initialize() {
    var center = new google.maps.LatLng(12.9667,77.5667);
    var mapOptions = {
        zoom: 12,
        center: center,
        mapTypeId: google.maps.MapTypeId.TERRAIN
    };

    map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
    for (i = 0; i < markers1.length; i++) {
        addMarker(markers1[i]);
    }
}

/**
 * Function to add marker to map
 */

function addMarker(marker) {
    var category = marker[4];
    var title = marker[1];
    var pos = new google.maps.LatLng(marker[2], marker[3]);
    var content = marker[1];

    marker1 = new google.maps.Marker({
        title: title,
        position: pos,
        category: category,
        map: map
    });

    gmarkers1.push(marker1);

    // Marker click listener
    google.maps.event.addListener(marker1, 'click', (function (marker1, i) {
        return function () {
            console.log('Gmarker 1 gets pushed');
 var compiled = $compile('<div><div>' +marker1[i][0] + ' </div><div>' + marker1[i][1] + ' </div><div>' +marker1[i][2] + ' </div><div><button ng-click="getid(marker1[' + i + '][5])">Get</button></div></div>')($scope);

                                var infowindow = new google.maps.InfoWindow({
                                    content: compiled[0]
                                });
            //infowindow.setContent(content);
            infowindow.open(map, marker1);
            map.panTo(this.getPosition());
            map.setZoom(15);
        }
    })(marker1, i));
}
$scope.getid = function(id) {
                    console.log(id)

                    }
/**
 * Function to filter markers by category
 */

filterMarkers = function (category) {
    for (i = 0; i < markers1.length; i++) {
        marker = gmarkers1[i];
        // If is same category or category not picked
        if (marker.category == category || category.length === 0) {
            marker.setVisible(true);
        }
        // Categories don't match 
        else {
            marker.setVisible(false);
        }
    }
}

// Init map
initialize();
}//]]> 

</script>

</head>
<body>
  <div id="map-canvas"></div>
<select id="type" onchange="filterMarkers(this.value);">
    <option value="">Please select category</option>
    <option value="second">second</option>
    <option value="car">car</option>
    <option value="third">third</option>
</select>

</body>

</html>

最佳答案

marker1 是代码中的一个对象

marker1 = new google.maps.Marker({
    title: title,
    position: pos,
    category: category,
    map: map
});

然后你尝试访问其中的一些多维数组元素

var compiled = $compile('<div><div>' +marker1[i][0] + ' </div><div>' + marker1[i][1] + ...

所以修复这个错误,我认为它应该可以工作

但是为循环计数器创建全局变量i是一种不好的做法

关于javascript - 谷歌地图信息窗口不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32657551/

相关文章:

javascript - Angularjs折叠导航栏必须点击两次才能打开

javascript - 索引 Ctrl 不是函数

javascript - 谷歌地图 : update image overlay

android - Google Maps Android SDK 崩溃 - androidmapsapi-ZoomTableManager

javascript ajax 成功功能不起作用?

javascript - 使 jQuery UI 可拖动到窗口外

javascript - Primefaces : Data table clear/reset the row data does not work

javascript - 如何使用 Javascript 禁用和启用 HTML 表格?

javascript - 作用域函数不适用于 JSON 对象

html - 如何按经度和纬度在我的网站上显示谷歌地图