function queryOverpass(lat, lng) {
var latlng = L.latLng(lat, lng).wrap(),
bounds = map.getBounds().wrap(),
- precision = OSM.zoomPrecision(map.getZoom()),
- bbox = bounds.getSouth().toFixed(precision) + "," +
- bounds.getWest().toFixed(precision) + "," +
- bounds.getNorth().toFixed(precision) + "," +
- bounds.getEast().toFixed(precision),
- radius = 10 * Math.pow(1.5, 19 - map.getZoom()),
- around = "around:" + radius + "," + lat + "," + lng,
- nodes = "node(" + around + ")",
- ways = "way(" + around + ")",
- relations = "relation(" + around + ")",
- nearby = "(" + nodes + ";" + ways + ";);out tags geom(" + bbox + ");" + relations + ";out geom(" + bbox + ");",
- isin = "is_in(" + lat + "," + lng + ")->.a;way(pivot.a);out tags bb;out ids geom(" + bbox + ");relation(pivot.a);out tags bb;";
+ zoom = map.getZoom(),
+ bbox = [bounds.getSouthWest(), bounds.getNorthEast()]
+ .map(c => OSM.cropLocation(c, zoom))
+ .join(),
+ geombbox = "geom(" + bbox + ");",
+ radius = 10 * Math.pow(1.5, 19 - zoom),
+ around = "(around:" + radius + "," + lat + "," + lng + ")",
+ nodes = "node" + around,
+ ways = "way" + around,
+ relations = "relation" + around,
+ nearby = "(" + nodes + ";" + ways + ";);out tags " + geombbox + relations + ";out " + geombbox,
+ isin = "is_in(" + lat + "," + lng + ")->.a;way(pivot.a);out tags bb;out ids " + geombbox + "relation(pivot.a);out tags bb;";
$("#sidebar_content .query-intro")
.hide();
if (marker) map.removeLayer(marker);
- marker = L.circle(latlng, radius, featureStyle).addTo(map);
-
- $(document).everyTime(75, "fadeQueryMarker", function (i) {
- if (i === 10) {
- map.removeLayer(marker);
- } else {
- marker.setStyle({
- opacity: 1 - (i * 0.1),
- fillOpacity: 0.5 - (i * 0.05)
- });
- }
- }, 10);
+ marker = L.circle(latlng, Object.assign({
+ radius: radius,
+ className: "query-marker"
+ }, featureStyle)).addTo(map);
runQuery(latlng, radius, nearby, $("#query-nearby"), false);
runQuery(latlng, radius, isin, $("#query-isin"), true, compareSize);
}
function clickHandler(e) {
- var precision = OSM.zoomPrecision(map.getZoom()),
- latlng = e.latlng.wrap(),
- lat = latlng.lat.toFixed(precision),
- lng = latlng.lng.toFixed(precision);
+ const [lat, lon] = OSM.cropLocation(e.latlng, map.getZoom());
- OSM.router.route("/query?lat=" + lat + "&lon=" + lng);
+ OSM.router.route("/query?" + Qs.stringify({ lat, lon }));
}
function enableQueryMode() {