mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
for search,details in format=HTML return geometry in geojson, not wkt. No longer need leaflet-omnivore plugin
This commit is contained in:
@@ -241,7 +241,7 @@
|
|||||||
echo 'var nominatim_map_init = ' . json_encode($aNominatimMapInit, JSON_PRETTY_PRINT) . ';';
|
echo 'var nominatim_map_init = ' . json_encode($aNominatimMapInit, JSON_PRETTY_PRINT) . ';';
|
||||||
|
|
||||||
$aPlace = array(
|
$aPlace = array(
|
||||||
'outlinestring' => $aPointDetails['outlinestring'],
|
'asgeojson' => $aPointDetails['asgeojson'],
|
||||||
'lon' => $aPointDetails['lon'],
|
'lon' => $aPointDetails['lon'],
|
||||||
'lat' => $aPointDetails['lat'],
|
'lat' => $aPointDetails['lat'],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -10,5 +10,4 @@
|
|||||||
<script src="js/jquery.min.js"></script>
|
<script src="js/jquery.min.js"></script>
|
||||||
<script src="js/bootstrap.min.js"></script>
|
<script src="js/bootstrap.min.js"></script>
|
||||||
<script src="js/leaflet.min.js"></script>
|
<script src="js/leaflet.min.js"></script>
|
||||||
<script src="js/leaflet-omnivore.min.js"></script>
|
|
||||||
<script src="js/nominatim-ui.js"></script>
|
<script src="js/nominatim-ui.js"></script>
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
<div class="form-group search-button-group">
|
<div class="form-group search-button-group">
|
||||||
<button type="submit" class="btn btn-primary btn-sm">Search</button>
|
<button type="submit" class="btn btn-primary btn-sm">Search</button>
|
||||||
<?php if (CONST_Search_AreaPolygons) { ?>
|
<?php if (CONST_Search_AreaPolygons) { ?>
|
||||||
<!-- <input type="checkbox" value="1" name="polygon" <?php if ($bAsText) echo "checked='checked'"; ?>/> Highlight -->
|
<!-- <input type="checkbox" value="1" name="polygon_geojson" <?php if ($bAsGeoJSON) echo "checked='checked'"; ?>/> Highlight -->
|
||||||
<input type="hidden" value="1" name="polygon" />
|
<input type="hidden" value="1" name="polygon_geojson" />
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<input type="hidden" name="viewbox" value="<?php echo $sViewBox; ?>" />
|
<input type="hidden" name="viewbox" value="<?php echo $sViewBox; ?>" />
|
||||||
<div class="checkbox-inline">
|
<div class="checkbox-inline">
|
||||||
|
|||||||
@@ -99,10 +99,10 @@ $sSQL .= " CASE ";
|
|||||||
$sSQL .= " WHEN importance = 0 OR importance IS NULL THEN 0.75-(rank_search::float/40) ";
|
$sSQL .= " WHEN importance = 0 OR importance IS NULL THEN 0.75-(rank_search::float/40) ";
|
||||||
$sSQL .= " ELSE importance ";
|
$sSQL .= " ELSE importance ";
|
||||||
$sSQL .= " END as calculated_importance, ";
|
$sSQL .= " END as calculated_importance, ";
|
||||||
$sSQL .= " ST_AsText(CASE ";
|
$sSQL .= " ST_AsGeoJSON(CASE ";
|
||||||
$sSQL .= " WHEN ST_NPoints(geometry) > 5000 THEN ST_SimplifyPreserveTopology(geometry, 0.0001) ";
|
$sSQL .= " WHEN ST_NPoints(geometry) > 5000 THEN ST_SimplifyPreserveTopology(geometry, 0.0001) ";
|
||||||
$sSQL .= " ELSE geometry ";
|
$sSQL .= " ELSE geometry ";
|
||||||
$sSQL .= " END) as outlinestring";
|
$sSQL .= " END) as asgeojson";
|
||||||
$sSQL .= " FROM placex ";
|
$sSQL .= " FROM placex ";
|
||||||
$sSQL .= " WHERE place_id = $iPlaceID";
|
$sSQL .= " WHERE place_id = $iPlaceID";
|
||||||
|
|
||||||
|
|||||||
1
website/js/leaflet-omnivore.min.js
vendored
1
website/js/leaflet-omnivore.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,6 +1,22 @@
|
|||||||
var map;
|
var map;
|
||||||
var last_click_latlng;
|
var last_click_latlng;
|
||||||
|
|
||||||
|
function parse_and_normalize_geojson_string(raw_string){
|
||||||
|
// normalize places the geometry into a featurecollection, similar to
|
||||||
|
// https://github.com/mapbox/geojson-normalize
|
||||||
|
var parsed_geojson = {
|
||||||
|
type: "FeatureCollection",
|
||||||
|
features: [
|
||||||
|
{
|
||||||
|
type: "Feature",
|
||||||
|
geometry: JSON.parse(raw_string),
|
||||||
|
properties: {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
return parsed_geojson;
|
||||||
|
}
|
||||||
|
|
||||||
jQuery(document).on('ready', function(){
|
jQuery(document).on('ready', function(){
|
||||||
|
|
||||||
if ( !$('#search-page,#reverse-page').length ){ return; }
|
if ( !$('#search-page,#reverse-page').length ){ return; }
|
||||||
@@ -159,12 +175,18 @@ jQuery(document).on('ready', function(){
|
|||||||
|
|
||||||
var bounds = [[result.aBoundingBox[0]*1,result.aBoundingBox[2]*1], [result.aBoundingBox[1]*1,result.aBoundingBox[3]*1]];
|
var bounds = [[result.aBoundingBox[0]*1,result.aBoundingBox[2]*1], [result.aBoundingBox[1]*1,result.aBoundingBox[3]*1]];
|
||||||
map.fitBounds(bounds);
|
map.fitBounds(bounds);
|
||||||
if (result.astext && result.astext.match(/(POLY)|(LINE)/) ){
|
|
||||||
var geojson_layer = L.geoJson(null, {
|
if (result.asgeojson && result.asgeojson.match(/(Polygon)|(Line)/) ){
|
||||||
// http://leafletjs.com/reference.html#geojson-style
|
|
||||||
style: function(feature) { return { clickable: false, color: 'blue' }; }
|
var geojson_layer = L.geoJson(
|
||||||
});
|
parse_and_normalize_geojson_string(result.asgeojson),
|
||||||
omnivore.wkt.parse(result.astext,null,geojson_layer);
|
{
|
||||||
|
// http://leafletjs.com/reference-1.0.3.html#path-option
|
||||||
|
style: function(feature) {
|
||||||
|
return { interactive: false, color: 'blue' };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
layerGroup.addLayer(geojson_layer);
|
layerGroup.addLayer(geojson_layer);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -252,14 +274,18 @@ jQuery(document).on('ready', function(){
|
|||||||
var circle = L.circleMarker([nominatim_result.lat,nominatim_result.lon], { radius: 10, weight: 2, fillColor: '#ff7800', color: 'blue', opacity: 0.75});
|
var circle = L.circleMarker([nominatim_result.lat,nominatim_result.lon], { radius: 10, weight: 2, fillColor: '#ff7800', color: 'blue', opacity: 0.75});
|
||||||
map.addLayer(circle);
|
map.addLayer(circle);
|
||||||
|
|
||||||
if ( nominatim_result.outlinestring ){
|
if ( nominatim_result.asgeojson ){
|
||||||
|
|
||||||
var geojson_layer = L.geoJson(null, {
|
var geojson_layer = L.geoJson(
|
||||||
// http://leafletjs.com/reference.html#geojson-style
|
parse_and_normalize_geojson_string(nominatim_result.asgeojson),
|
||||||
style: function(feature) { return { clickable: false, color: 'blue' }; }
|
{
|
||||||
});
|
// http://leafletjs.com/reference-1.0.3.html#path-option
|
||||||
omnivore.wkt.parse(nominatim_result.outlinestring,null,geojson_layer);
|
style: function(feature) {
|
||||||
layerGroup.addLayer(geojson_layer);
|
return { interactive: false, color: 'blue' };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
map.addLayer(geojson_layer);
|
||||||
map.fitBounds(geojson_layer.getBounds());
|
map.fitBounds(geojson_layer.getBounds());
|
||||||
} else {
|
} else {
|
||||||
map.setView([nominatim_result.lat,nominatim_result.lon],10);
|
map.setView([nominatim_result.lat,nominatim_result.lon],10);
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ $sOutputFormat = $oParams->getSet('format', array('html', 'xml', 'json', 'jsonv2
|
|||||||
|
|
||||||
// Show / use polygons
|
// Show / use polygons
|
||||||
if ($sOutputFormat == 'html') {
|
if ($sOutputFormat == 'html') {
|
||||||
$oGeocode->setIncludePolygonAsText($oParams->getBool('polygon'));
|
$oGeocode->setIncludePolygonAsGeoJSON($oParams->getBool('polygon_geojson'));
|
||||||
$bAsText = false;
|
$bAsGeoJSON = false;
|
||||||
} else {
|
} else {
|
||||||
$bAsPoints = $oParams->getBool('polygon');
|
$bAsPoints = $oParams->getBool('polygon');
|
||||||
$bAsGeoJSON = $oParams->getBool('polygon_geojson');
|
$bAsGeoJSON = $oParams->getBool('polygon_geojson');
|
||||||
|
|||||||
Reference in New Issue
Block a user