使用 API v3 在 angular 上添加动态标记
Add dynamic markers on angular using API v3
我试图在我的地图控制器中动态添加多个标记,但我无法获取 id 来迭代和显示我的所有标记,我如何设置它以获取所有标记并正确显示它们,我得到的错误是:
标记模型没有可分配子项的 ID。这是性能所必需的。请分配 ID,或将 ID 重定向到不同的键
ShowList.enderecoViagem(viagens_id).then(function (listview) {
$scope.enderecos = listview;
uiGmapGoogleMapApi.then(function (maps) {
$scope.googlemap = {};
$scope.map = {
center: {
latitude: $scope.enderecos[0].latitude,
longitude: $scope.enderecos[0].longitude
},
zoom: 14,
pan: 1,
options: $scope.mapOptions,
control: {},
events: {
tilesloaded: function (maps, eventName, args) {},
dragend: function (maps, eventName, args) {},
zoom_changed: function (maps, eventName, args) {}
}
};
});
$scope.windowOptions = {
show: false
};
$scope.title = "Window Title!";
uiGmapIsReady.promise() // if no value is put in promise() it defaults to promise(1)
.then(function (instances) {
console.log(instances[0].map); // get the current map
})
.then(function () {
$scope.addMarkerClickFunction($scope.markers);
});
for(var i = 0; i < $scope.enderecos.length; i++) {
$scope.markers = [];
$scope.markers.push({
id:[i],
latitude: $scope.enderecos[i].latitude,
longitude: $scope.enderecos[i].longitude
});
}
}
问题出在这里:
$scope.markers.push({
id:[i],
latitude: $scope.enderecos[i].latitude,
longitude: $scope.enderecos[i].longitude
});
在指定 id
属性的地方,您已将其包装在数组 shorthand、[ ]
中
这只有在您实际访问数组值时才有意义,例如你在哪里enderecos[i].latitude
。或者,如果您尝试将数组传递给 id
属性,但我很确定它需要一个简单的字符串或整数。
改成这样应该没问题:
$scope.markers.push({
id: i,
latitude: $scope.enderecos[i].latitude,
longitude: $scope.enderecos[i].longitude
});
我试图在我的地图控制器中动态添加多个标记,但我无法获取 id 来迭代和显示我的所有标记,我如何设置它以获取所有标记并正确显示它们,我得到的错误是:
标记模型没有可分配子项的 ID。这是性能所必需的。请分配 ID,或将 ID 重定向到不同的键
ShowList.enderecoViagem(viagens_id).then(function (listview) {
$scope.enderecos = listview;
uiGmapGoogleMapApi.then(function (maps) {
$scope.googlemap = {};
$scope.map = {
center: {
latitude: $scope.enderecos[0].latitude,
longitude: $scope.enderecos[0].longitude
},
zoom: 14,
pan: 1,
options: $scope.mapOptions,
control: {},
events: {
tilesloaded: function (maps, eventName, args) {},
dragend: function (maps, eventName, args) {},
zoom_changed: function (maps, eventName, args) {}
}
};
});
$scope.windowOptions = {
show: false
};
$scope.title = "Window Title!";
uiGmapIsReady.promise() // if no value is put in promise() it defaults to promise(1)
.then(function (instances) {
console.log(instances[0].map); // get the current map
})
.then(function () {
$scope.addMarkerClickFunction($scope.markers);
});
for(var i = 0; i < $scope.enderecos.length; i++) {
$scope.markers = [];
$scope.markers.push({
id:[i],
latitude: $scope.enderecos[i].latitude,
longitude: $scope.enderecos[i].longitude
});
}
}
问题出在这里:
$scope.markers.push({
id:[i],
latitude: $scope.enderecos[i].latitude,
longitude: $scope.enderecos[i].longitude
});
在指定 id
属性的地方,您已将其包装在数组 shorthand、[ ]
这只有在您实际访问数组值时才有意义,例如你在哪里enderecos[i].latitude
。或者,如果您尝试将数组传递给 id
属性,但我很确定它需要一个简单的字符串或整数。
改成这样应该没问题:
$scope.markers.push({
id: i,
latitude: $scope.enderecos[i].latitude,
longitude: $scope.enderecos[i].longitude
});