Как выполнить поиск по листовке ввода? - PullRequest
0 голосов
/ 16 июня 2020

Мне нужна ваша помощь, я использую библиотеку Leaflet, я бы хотел поставить поиск адреса, но не поиск внутри карты, но да, с вводом, вне карты:

введите описание изображения здесь

Однако я видел, что это можно сделать, Nominatim даже использует его (https://nominatim.openstreetmap.org/), но есть нет пояснений, как это сделать.

Код выглядит так

var target = document.getElementById('map');

document.addEventListener('DOMContentLoaded', function(e){ //executa o código somente após carregar o DOM
    var optionsMap = {
        center: [-21.511263, -51.434978],
        zoom: 15
    }

    // criação do mapa
    let map = new L.map(target, optionsMap);
    map.doubleClickZoom.disable();

    //adicionar uma camada de bloco do OpenStreetMap
    let basemap = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
    }); basemap.addTo(map);
});
/*Imports*/
@import 'reset.css';
@import 'https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css';
@import 'https://unpkg.com/leaflet@1.6.0/dist/leaflet.css';
@import 'popup.css';

/*Geral*/
body{
    background-color: rgb(109, 164, 182);
    font-family: Arial, Helvetica, sans-serif;
}

.titulo{
    padding: 0.5em;
    color: white;
    text-align: center;
    font-size: 3em;
    font-weight: bold;
    text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
}

.container {
    width: 100%;
    padding-right: 15px;
    padding-left: 15px;
    margin-right: auto;
    margin-left: auto;
}

/*Section*/
.campo{
    padding: 1em;
    background-color: rgba(255, 255, 255, 0.5);
    width: 80%;
    height: 80%;
    border-radius: 1em;
    box-shadow: 0px 2px 6.35px 0.35px rgba(0, 0, 0, 0.3);
}

.pesquisa{
    border: none;
    border-top-left-radius: 5px;
    border-bottom-left-radius: 5px;
    width: 92%;
    padding: 10px;
}

.btn{
    border: none;
    border-top-right-radius: 5px;
    border-bottom-right-radius: 5px;
    padding: 10px;
    margin-left: 0em;
    margin-top: 0em;
}

.btn:hover{
    background-color: rgb(90, 136, 221, 0.3);
}

#map{    
    width: auto;
    height: 500px;
    border: none;
    border-radius: 1em;
    box-shadow: 2px 2px 2px 2px rgba(0, 0, 0, 0.3);
}

/*Footer*/
footer{
    padding: 1em;
    text-align: center;
    color: white;
}

footer a {
    color: white;
    text-decoration: none;
}

footer a:hover{
    font-weight: bold;
}
<!DOCTYPE html>
<html lang="pt-Br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Leaflet - Nominatim</title>

    <link rel="stylesheet" href="css/estilos.css">
    <script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin=""></script>
</head>
<body>
    <div class="container">
        <header>
            <h1 class="titulo">Maps Leaflet - Nominatim</h1>
        </header>
        <section class="campo container">
            <div class="container">
                <input class="pesquisa" type="text"><input class="btn" type="button" value="Ok!">
            </div>
            <br>
            <div id="map" class="container"></div>
        </section>
        <footer><a href="https://github.com/cortelucas">cortelucas</a></footer>
    </div>
    <script src="js/map.js"></script>
</body>
</html>

Искренне прошу вашей помощи!

1 Ответ

0 голосов
/ 17 июня 2020

Как я сказал вчера, я подготовил рабочий пример, работающий в формате Geo JSON. Я немного изменил autosuggest в моем приложении.
Я подключился к nominatim , а также добавил возможность работы на stati c Geo JSON файл.

Я подготовил ветку - autosuggest + nominatim и рабочий пример nominatim-leaflet-search

Конечно, аж Я мог бы потестить в короткие сроки, но нужно считаться с тем, что могут быть некоторые ошибки. Gzip-код, весит около 8 КБ, так что это неплохо.

ОБНОВЛЕНИЕ
Я подготовил проект на github Leaflet.Autocomplete , показывающий работу плагин и, насколько я мог, объяснил, как он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...