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