Hide/show Here 地图上的地图标记
Hide/show map marker on Here map
const testIcon = `<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<rect stroke="white" fill="blue" x="1" y="1" width="22" height="22" /></svg>`;
不在 CSS 上使用它,地图标记只显示在页面上,class 被应用。
.hide { visibility: hidden }
.show { visibility: visible }
我尝试同时使用 H.map.Icon 和 H.map.DomIcon 以及各自的 Marker 和 DomMarker,但没有成功。
var icon = new H.map.DomIcon(testIcon);
var marker = new H.map.DomMarker({lat: 'latitudeVal', lng: 'longitudeVal'};, { icon:icon })
map.addObject(marker);
这是针对现有地图的。我想翻转特定标记上的 classes(或只是将可见性设置为隐藏)。我在地图上有几个地图标记。如何检索特定标记并将可见性设置为隐藏或恢复可见?
是否有 Javascript 解决方案可能根本不需要重新调用 API?
我也一直在尝试 API 方法,但我不确定如何遍历所有标记并设置特定标记的可见性。 DomMarker Get position, setting visibility 是否需要这样做,因为这涉及额外的 API 调用和性能?
如果不需要,我想避免额外调用 API,如果可能的话,直接翻转标记的可见性。
// The icon gets added fine...
const testIcon = `<svg width="25" height="25" class="show" xmlns="http://www.w3.org/2000/svg"><ellipse cx="10" cy="10" rx="8" ry="8" fill="blue" /></svg>`;
const hideIcon = `<svg visibility="hidden" width="12" height="12" xmlns="http://www.w3.org/2000/svg"><ellipse cx="6" cy="6" rx="5" ry="5" fill="#5980B2" stroke="white" /></svg>`;
let mapMarkerList = []; // Could this be used.
data.forEach(function (mapMarker, i) {
var icon = new H.map.DomIcon(testIcon);
let marker = new H.map.DomMarker( { lat: mapMarker.lat, lng: mapMarker.long } , { icon:icon })
map.addObject(marker);
mapMarkerList.append(marker);
});
toggleMarkers(data, map, '1');
// dataset looks like:
dataset = {
{ lat:'123', long:'-123', customData: 'abc' },
{ lat:'123', long:'-123', customData: 'x' },
{ lat:'123', long:'-123', customData: 'abc' },
}
function realToggleMarkers(mapMarkers, valueToFilter, map) {
// Hide all 'abc' lat/long markers...
dataset.forEach(function (value, i) {
if(valueToFilter !== value.customData ) {
console.log('Hide');
// There's also a value.lat and value.long here that I create marker with. I need to hide that specific marker.
// mapMarkers loop through? === value.lat? then hide.
// mapMarker[0].getPosition().lat // How can I check this matches value.lat without nested loops?
} else {
console.log('Show');
}
});
}
// Doesn't work....
// Use the map object above and hide/show specific markers.....
function toggleMarkers(mapMarkers, map, valueToFilter) {
mapMarkers.forEach(function (value, i) {
if(i%2===0) {
// How can we get individual marker from the 'map' object built out above?
console.log(marker.getIcon());
// Doesn't work....
marker.getIcon().setVisibility(false); // Or any other approach changing the visibility....
}
});
也许某些 copy/paste 在这里工作是您所做但未修改的:console.log(marker.getIcon());
这不应该是 console.log(value.getIcon());
marker
不是 foreach 循环内的变量
请使用H.map.object.setVisibility(boolean)
https://developer.here.com/documentation/maps/topics_api/h-map-object.html#h-map-object__setvisibility
标记也是 H.map.object。应该在下面。
value.setVisibility(false);
const testIcon = `<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<rect stroke="white" fill="blue" x="1" y="1" width="22" height="22" /></svg>`;
不在 CSS 上使用它,地图标记只显示在页面上,class 被应用。
.hide { visibility: hidden }
.show { visibility: visible }
我尝试同时使用 H.map.Icon 和 H.map.DomIcon 以及各自的 Marker 和 DomMarker,但没有成功。
var icon = new H.map.DomIcon(testIcon);
var marker = new H.map.DomMarker({lat: 'latitudeVal', lng: 'longitudeVal'};, { icon:icon })
map.addObject(marker);
这是针对现有地图的。我想翻转特定标记上的 classes(或只是将可见性设置为隐藏)。我在地图上有几个地图标记。如何检索特定标记并将可见性设置为隐藏或恢复可见? 是否有 Javascript 解决方案可能根本不需要重新调用 API?
我也一直在尝试 API 方法,但我不确定如何遍历所有标记并设置特定标记的可见性。 DomMarker Get position, setting visibility 是否需要这样做,因为这涉及额外的 API 调用和性能?
如果不需要,我想避免额外调用 API,如果可能的话,直接翻转标记的可见性。
// The icon gets added fine...
const testIcon = `<svg width="25" height="25" class="show" xmlns="http://www.w3.org/2000/svg"><ellipse cx="10" cy="10" rx="8" ry="8" fill="blue" /></svg>`;
const hideIcon = `<svg visibility="hidden" width="12" height="12" xmlns="http://www.w3.org/2000/svg"><ellipse cx="6" cy="6" rx="5" ry="5" fill="#5980B2" stroke="white" /></svg>`;
let mapMarkerList = []; // Could this be used.
data.forEach(function (mapMarker, i) {
var icon = new H.map.DomIcon(testIcon);
let marker = new H.map.DomMarker( { lat: mapMarker.lat, lng: mapMarker.long } , { icon:icon })
map.addObject(marker);
mapMarkerList.append(marker);
});
toggleMarkers(data, map, '1');
// dataset looks like:
dataset = {
{ lat:'123', long:'-123', customData: 'abc' },
{ lat:'123', long:'-123', customData: 'x' },
{ lat:'123', long:'-123', customData: 'abc' },
}
function realToggleMarkers(mapMarkers, valueToFilter, map) {
// Hide all 'abc' lat/long markers...
dataset.forEach(function (value, i) {
if(valueToFilter !== value.customData ) {
console.log('Hide');
// There's also a value.lat and value.long here that I create marker with. I need to hide that specific marker.
// mapMarkers loop through? === value.lat? then hide.
// mapMarker[0].getPosition().lat // How can I check this matches value.lat without nested loops?
} else {
console.log('Show');
}
});
}
// Doesn't work....
// Use the map object above and hide/show specific markers.....
function toggleMarkers(mapMarkers, map, valueToFilter) {
mapMarkers.forEach(function (value, i) {
if(i%2===0) {
// How can we get individual marker from the 'map' object built out above?
console.log(marker.getIcon());
// Doesn't work....
marker.getIcon().setVisibility(false); // Or any other approach changing the visibility....
}
});
也许某些 copy/paste 在这里工作是您所做但未修改的:console.log(marker.getIcon());
这不应该是 console.log(value.getIcon());
marker
不是 foreach 循环内的变量
请使用H.map.object.setVisibility(boolean)
https://developer.here.com/documentation/maps/topics_api/h-map-object.html#h-map-object__setvisibility 标记也是 H.map.object。应该在下面。
value.setVisibility(false);