Як знайти собі місце на землі і не потрапити на лічильник Яндекса +28
- 30.07.15 1:23 •
- kashey •
- # 263863 •
- Хабрахабр •
- 9 •
- 23036
- такий же як Forbes, тільки краще.
... ця історія почалася давним-давно в далекій-далекій країні Краковія, чиї жителі безтурботно проживали свої життя і не знали ...
Насправді, все могло б бути не так страшно, якби не лінь і віра в ЧУДО! дивіться:
В результаті простий операції на карті з'явиться одна або більше точок і саме в потрібному місці. Ну хіба не диво?
Все б нічого, і 40 000 відділень пошти, 211 000 населених пунктів, мільйон вулиць, 55 000 відвідувачів за вчора ... Цього вистачить на два добових ліміту з хвостиком. Але багато років це саме так і працювало. А все чому?
Не будемо чекати злого робота - будемо вирішувати проблему. На щастя рішення існує, і не одне, а два.
Рішення перше - правильне
Модифікувати backend так, щоб було куди зберігати координати. А це значить, зробити нормальну адмінку, посадити дівчину, яка на основі візуального огляду «відповіді» геокодера буде виставляти TTL даними, рухати іконки, досягаючи сантиметрової точності розміщення міток ...
Плюси: технологічно, надійно, красива дівчина в офісі.
Мінуси: потрібно бекенд, потрібно БД, не зовсім зрозуміло що робити з призначеним для користувача пошуком; не зовсім зрозуміле, як відреагує дружина.
Рішення друге - дешеве і сердите
Зробити свій пошук! Такий, щоб щось в себе зберігав (тобто кешуючий проксі), був «з коробки», щоб справлявся з одночасними однаковими запитами і так далі.
Загалом ідея дуже проста: ходити в якусь власну ручку, там перевіряти стан кеша і, якщо потрібних даних немає, відправляти запит в HTTP-геокодер Яндекс.Карт.
Для багатьох великих проектів правильним рішенням буде написати щось своє. Бути може навіть розвернути зовсім свій геокодер, наприклад, на основі OSM.
Але з досвіду знаю, що для більшості найвигідніший варіант - взяти щось готове з github. За традицією даю посилання на geocode-tool варіант вирішення проблеми від dimik. Діма колись працював Яндекс.Карти і ніяк не може зупинитися.
У загальному випадку geocode-tool це серверна частина ( «ручка»), web-інтерфейс зі статистикою, і модуль для Яндекс.Карт.
Мінуси: потрібно запускати на сервері ще один сервіс, до того ж на ноді. В офісі не з'явиться дівчина.
Плюси: Вся робота звелася до стрибку ріпи і додаванню пари рядків на клієнті (ну майже).
Як відомо на півдні Москви чотири (1, 2, 3, 4) свитину і все приблизно в одному місці, але два з них в Москві, одне - в Московській області, а ще одне - в Калузькій.
Геокодер - це простий механиз пошуку по базі, а значить він може видати трохи не той об'єкт, який хочеться. Наприклад, тому що шуканого насправді немає (пам'ятай про Краковії).
Це все веселіше ніж здається. Але! Я! Нарешті! Можу спати спокійно. Чого і вам раджу.
PS: Насправді над «еСоседі» я працюю у вільний від основної роботи час. А основна робота як раз в Яндекс.Картах. І я вас попередив.
PPS: Всі картинки від fevrony.
Ви можете допомогти і перевести трохи коштів на розвиток сайту