search: draw a marker highlighting search results (rectangle for region, 10px circle for point)
This commit is contained in:
		| @@ -15,36 +15,57 @@ window.setupGeosearch = function() { | |||||||
|     map.locate({setView : true, maxZoom: 13}); |     map.locate({setView : true, maxZoom: 13}); | ||||||
|   }); |   }); | ||||||
|   $('#geosearch').keyup(function(){$(this).removeClass('search_not_found')}); |   $('#geosearch').keyup(function(){$(this).removeClass('search_not_found')}); | ||||||
|  |  | ||||||
|  |   window.searchResultLayer = L.layerGroup(); | ||||||
|  |   map.addLayer(window.searchResultLayer); | ||||||
| } | } | ||||||
|  |  | ||||||
| window.search = function(search) { | window.search = function(search) { | ||||||
|     if (!runHooks('geoSearch', search)) { |   window.searchResultLayer.clearLayers(); | ||||||
|       return true; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     if(search.split(",").length == 2) { |   var searchMarkerOptions = {color:'red', weight:3, opacity: 0.5, fill:false, dashArray:"5,5", clickable:false}; | ||||||
|       var ll = search.split(","); |  | ||||||
|       if(!isNaN(ll[0]) && !isNaN(ll[1])) { |  | ||||||
|         ll = [parseFloat(ll[0]), parseFloat(ll[1])]; |  | ||||||
|         if(ll[0] >= -90 && ll[0] <= 90 && ll[1] >= -180 && ll[1] <= 180) { |  | ||||||
|           window.map.setView(L.latLng(ll[0], ll[1]), 17); |  | ||||||
|           if(window.isSmartphone()) window.show('map'); |  | ||||||
|           return true; |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     $.getJSON(NOMINATIM + encodeURIComponent(search), function(data) { |  | ||||||
|       if(!data || !data[0]) { |   if (!runHooks('geoSearch', search)) { | ||||||
|         $('#geosearch').addClass('search_not_found');       |     return true; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if(search.split(",").length == 2) { | ||||||
|  |     var ll = search.split(","); | ||||||
|  |     if(!isNaN(ll[0]) && !isNaN(ll[1])) { | ||||||
|  |       ll = [parseFloat(ll[0]), parseFloat(ll[1])]; | ||||||
|  |       if(ll[0] >= -90 && ll[0] <= 90 && ll[1] >= -180 && ll[1] <= 180) { | ||||||
|  |         var ll = L.latLng(ll); | ||||||
|  |         window.map.setView(ll, 17); | ||||||
|  |  | ||||||
|  |         window.searchResultLayer.clearLayers(); | ||||||
|  |         window.searchResultLayer.addLayer(L.circleMarker(ll,searchMarkerOptions)); | ||||||
|  |  | ||||||
|  |         if(window.isSmartphone()) window.show('map'); | ||||||
|         return true; |         return true; | ||||||
|       } |       } | ||||||
|       var b = data[0].boundingbox; |     } | ||||||
|       if(!b) return true; |   } | ||||||
|       var southWest = new L.LatLng(b[0], b[2]), |  | ||||||
|           northEast = new L.LatLng(b[1], b[3]), |   $.getJSON(NOMINATIM + encodeURIComponent(search), function(data) { | ||||||
|           bounds = new L.LatLngBounds(southWest, northEast); |     if(!data || !data[0]) { | ||||||
|       window.map.fitBounds(bounds, {maxZoom: 17}); |       $('#geosearch').addClass('search_not_found'); | ||||||
|       if(window.isSmartphone()) window.show('map'); |       return true; | ||||||
|     }); |     } | ||||||
|  |     var b = data[0].boundingbox; | ||||||
|  |     if(!b) return true; | ||||||
|  |     var southWest = new L.LatLng(b[0], b[2]), | ||||||
|  |         northEast = new L.LatLng(b[1], b[3]), | ||||||
|  |         bounds = new L.LatLngBounds(southWest, northEast); | ||||||
|  |  | ||||||
|  |     window.searchResultLayer.clearLayers(); | ||||||
|  |     if (southWest.equals(northEast)) { | ||||||
|  |         window.searchResultLayer.addLayer(L.circleMarker(southWest,searchMarkerOptions)); | ||||||
|  |     } else { | ||||||
|  |       window.searchResultLayer.addLayer(L.rectangle(bounds,searchMarkerOptions)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     window.map.fitBounds(bounds, {maxZoom: 17}); | ||||||
|  |     if(window.isSmartphone()) window.show('map'); | ||||||
|  |   }); | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user