API Карт Google V3: маркеры поиска

Я создаю карту google для клиента, и они хотят иметь возможность искать маркеры, которые я уже добавил на карту.

Я уже построил карту API V3, которая берет маркеры из таблицы MySQL и выталкивает их в массив маркеров, но я изо всех сил пытаюсь настроить окно поиска, в котором будут перечислены любые соответствия поисковому запросу.

У кого-нибудь был опыт этого или способный мне помочь?

Ответы

Ответ 1

Вам будет лучше всего обслуживать ваш собственный набор данных, который вытащил из базы данных и обрабатывал их поиск в вашем собственном коде. Для реализации вам нужно будет сохранить ссылку на контакт, который вы создаете для каждого местоположения в этом наборе данных. Получите локальные данные из базы данных, сохраните локально, добавьте их на карту, обновите локальное хранилище данных ссылкой на созданный вывод, затем переместите поиск в свой набор данных и, наконец, центр или все, что вы хотите увидеть на карте. ссылка, которую вы сохранили для этого результата.

Это прохождение google является хорошим обзором этого типа решений. https://developers.google.com/maps/articles/phpsqlsearch_v3?csw=1#creating-the-table

Ответ 3

Для серверного сервера node.js это решение для поиска элементов, если вы уже зарегистрировали данные в базе данных.

  • Сначала мы создали новый обработчик запросов POST для URL-адресов с суффикс/запрос. Этот обработчик ожидает JSON или массив для тела запроса базы данных mysql, который задает три параметра: широта, долгота и расстояние. Эти параметры затем преобразуются и сохраняются как переменные в обработчик.

  • Затем мы создали общий запрос Mongoose с помощью Query Builder формат. Этот формат начинается с создания общего объекта запроса равный нефильтрованному поиску всех пользователей в нашей базе данных.

  • Если задано расстояние, Query Builder добавит новый поиск условие, которое фильтрует для всех пользователей, которые попадают на расстояние с учетом координат запросов (широта, долгота). *

* Здесь   мы также можем использовать параметр поиска MongoDB $near и связанный с ним   свойства maxDistance и сферические для указания диапазона были   надеясь покрыть. Умножали расстояние нашего тела запроса   на 1609.34, потому что мы хотим, чтобы наши пользователи вводили (в милях) и   конвертировать его в единицы MongoDB ожидает (в метрах). (Для пользователей mongoDB)

  1. Наконец, указывалось, что расстояние должно быть определено предполагая сферическую поверхность. Это важно, потому что оценивая расстояния по всему земному шару, в отличие от плоской Евклидова поверхность.

  2. Наконец, мы использовали query.exec, чтобы дать команду Mongoose запустить окончательный запрос. Если запрос не встречает ошибок, он предоставит JSON вывода всех пользователей, отвечающих критериям.

    //Получает JSON или записи массива для всех пользователей, которые удовлетворяют определенному набору условий запроса app.post('/query/', function (req, res) {

    // Grab all of the query parameters from the body.
    var lat             = req.body.latitude;
    var long            = req.body.longitude;
    var distance        = req.body.distance;
    
    // Opens a generic Mongoose Query. Depending on the post body we will...
    var query = User.find({});
    
    // ...include filter by Max Distance (converting miles to meters)
    if(distance){
    
        // (optional)Using MongoDB geospatial querying features. (Note how coordinates are set [long, lat]
        query = query.where('location').near({ center: {type: 'Point', coordinates: [long, lat]}, OR Your own query to be specified here.
    
            // Converting meters to miles(For mongoDB users). Specifying spherical geometry (for globe)
            maxDistance: distance * 1609.34, spherical: true});
    }
    
    // ... Other queries will go here ... 
    
    // Execute Query and Return the Query Results
    query.exec(function(err, users){
        if(err)
            res.send(err);
    
        // If no errors, respond with a JSON of all users that meet the criteria or you can also enter the array number you want to pass.
        res.json(users);
    });
    

    });

Вы также можете прочитать о geojson или обратиться к этому проекту Google Map с использованием стека MEAN.