From b1154d8239000ea2593285e9ead9b7920653289d Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Fri, 14 Apr 2017 18:23:22 +0000 Subject: [PATCH] Remove popup when removing associated element from map --- map.html | 38 +++++++++++++++++++++++++------------- 1 files changed, 25 insertions(+), 13 deletions(-) diff --git a/map.html b/map.html index f8f23fb..4970c5e 100644 --- a/map.html +++ b/map.html @@ -66,6 +66,18 @@ } } +function popupHide() { + popup.setPosition(undefined); + popup_feature_id = null; +} + +function popupShow(coordinates, id) { + popup.setPosition(coordinates); + if(id) { + popup_feature_id = id; + } +} + function init() { if(!window.jQuery) { fail(lang.jquery_not_loaded); @@ -107,8 +119,8 @@ }); // display popup on click - map.on('singleclick', function(evt) { - var feature = map.forEachFeatureAtPixel(evt.pixel, function(feature) { return feature; }); + map.on('singleclick', function(e) { + var feature = map.forEachFeatureAtPixel(e.pixel, function(feature) { return feature; }); if(feature) { var coordinates = feature.getGeometry().getCoordinates(); @@ -120,21 +132,17 @@ addParaWithText(popup_element, vehicle_type.num + ' ' + vehicle_type.type); } - popup.setPosition(coordinates); - popup_feature_id = feature.getId(); + popupShow(coordinates, feature.getId()); } else { - popup.setPosition(undefined); - popup_feature_id = null; + popupHide(); } }); // change mouse cursor when over marker map.on('pointermove', function(e) { - var pixel = map.getEventPixel(e.originalEvent); - var hit = map.hasFeatureAtPixel(pixel); - var target = map.getTarget(); - if(target.style) - target.style.cursor = hit ? 'pointer' : ''; + var hit = map.hasFeatureAtPixel(e.pixel); + var target = map.getTargetElement(); + target.style.cursor = hit ? 'pointer' : ''; }); } @@ -157,6 +165,9 @@ if(vehicle.isDeleted) { if(vehicle_feature) { vehicles_source.removeFeature(vehicle_feature); + if(popup_feature_id == vehicle.id) { + popupHide(); + } } continue; } @@ -210,8 +221,9 @@ } else { vehicle_feature.setProperties(vehicle); vehicle_feature.getStyle().getImage().setRotation(Math.PI * parseFloat(vehicle.heading) / 180.0); - if(popup_feature_id == vehicle.id) { - popup.setPosition(vehicle_feature.getGeometry().getCoordinates()); + + if(popup_feature_id == vehicle_feature.getId()) { + popupShow(vehicle_feature.getGeometry().getCoordinates()); } } } -- Gitblit v1.9.1