56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
function initializeSearch(map) {
|
|
$("#search_form").submit(submitSearch);
|
|
|
|
if ($("#query").val()) {
|
|
$("#search_form").submit();
|
|
}
|
|
|
|
// Focus the search field for browsers that don't support
|
|
// the HTML5 'autofocus' attribute
|
|
if (!("autofocus" in document.createElement("input"))) {
|
|
$("#query").focus();
|
|
}
|
|
|
|
$("#sidebar_content").on("click", ".search_results_entry a.set_position", clickSearchResult);
|
|
|
|
var marker = L.marker([0, 0], {icon: getUserIcon()});
|
|
|
|
function submitSearch(e) {
|
|
e.preventDefault();
|
|
|
|
var bounds = map.getBounds();
|
|
|
|
$("#sidebar_title").html(I18n.t('site.sidebar.search_results'));
|
|
$("#sidebar_content").load($(this).attr("action"), {
|
|
query: $("#query").val(),
|
|
minlon: bounds.getWest(),
|
|
minlat: bounds.getSouth(),
|
|
maxlon: bounds.getEast(),
|
|
maxlat: bounds.getNorth()
|
|
});
|
|
|
|
openSidebar();
|
|
}
|
|
|
|
function clickSearchResult(e) {
|
|
e.preventDefault();
|
|
|
|
var data = $(this).data(),
|
|
center = L.latLng(data.lat, data.lon);
|
|
|
|
if (data.minLon && data.minLat && data.maxLon && data.maxLat) {
|
|
map.fitBounds([[data.minLat, data.minLon],
|
|
[data.maxLat, data.maxLon]]);
|
|
} else {
|
|
map.setView(center, data.zoom);
|
|
}
|
|
|
|
marker
|
|
.setLatLng(center)
|
|
.addTo(map);
|
|
|
|
if (data.type && data.id) {
|
|
map.addObject(data, { zoom: false, style: { opacity: 0.2, fill: false } });
|
|
}
|
|
}
|
|
}
|