Angular google 地图自定义图标仅在更新标记时有效
Angular google maps custom Icon only works when marker is updated
当我添加带有图标的标记时,它显示为默认标记,但是当我更新位置时,它开始显示为我想要的自定义图标。
map.html
<ui-gmap-google-map center="map.center"
control="map.control"
zoom="map.zoom"
options="map.options"
bounds="map.bounds"
draggable="true">
<ui-gmap-markers
models="markerArray"
coords="'self'"
icon="'icon'">
</ui-gmap-markers>
</ui-gmap-google-map>
map.js/addMarker(放置标记,默认图标)
function addMarker(markerId, latitude, longitude, icon, iconSize) {
markerIconSize = new google.maps.Size(iconSize[0],iconSize[1]);
var marker = {
id: markerId,
latitude: latitude,
longitude: longitude,
icon: {
url: icon,
scaledSize: markerIconSize
}
};
$scope.markers.push(marker);
$scope.markerArray = $scope.markers;
}
map.js/updateMarker(使用自定义图标更新坐标)
function updateMarker(markerId,latitude,longitude) {
var marker = _.find($scope.markerArray, function(marker) {
return marker.id = markerId;
});
marker.latitude = latitude;
marker.longitude = longitude;
}
我能想到的几件事:
尝试对图标 url 进行硬编码,看看是否可行。
然后尝试拆分标记声明,所以:
var marker;
var markerOptions = {
id: markerId,
latitude: latitude,
longitude: longitude,
icon: {
url: icon,
scaledSize: markerIconSize
}
};
marker = new google.maps.Marker(markerOptions);
$scope.markers.push(marker);
$scope.markerArray = $scope.markers;
这就是我制作地图的方式,只是给你一个建议。希望它也对你有用。
当我添加带有图标的标记时,它显示为默认标记,但是当我更新位置时,它开始显示为我想要的自定义图标。
map.html
<ui-gmap-google-map center="map.center"
control="map.control"
zoom="map.zoom"
options="map.options"
bounds="map.bounds"
draggable="true">
<ui-gmap-markers
models="markerArray"
coords="'self'"
icon="'icon'">
</ui-gmap-markers>
</ui-gmap-google-map>
map.js/addMarker(放置标记,默认图标)
function addMarker(markerId, latitude, longitude, icon, iconSize) {
markerIconSize = new google.maps.Size(iconSize[0],iconSize[1]);
var marker = {
id: markerId,
latitude: latitude,
longitude: longitude,
icon: {
url: icon,
scaledSize: markerIconSize
}
};
$scope.markers.push(marker);
$scope.markerArray = $scope.markers;
}
map.js/updateMarker(使用自定义图标更新坐标)
function updateMarker(markerId,latitude,longitude) {
var marker = _.find($scope.markerArray, function(marker) {
return marker.id = markerId;
});
marker.latitude = latitude;
marker.longitude = longitude;
}
我能想到的几件事: 尝试对图标 url 进行硬编码,看看是否可行。 然后尝试拆分标记声明,所以:
var marker;
var markerOptions = {
id: markerId,
latitude: latitude,
longitude: longitude,
icon: {
url: icon,
scaledSize: markerIconSize
}
};
marker = new google.maps.Marker(markerOptions);
$scope.markers.push(marker);
$scope.markerArray = $scope.markers;
这就是我制作地图的方式,只是给你一个建议。希望它也对你有用。