Клуб API Карт

Работа с координатами.

Пост в архиве.

Добрый день.
Хотел бы разобраться с работой по координатам.

У меня на сайте ссылка /map/#type=map&center=55.807077920532535,37.62176946786539&zoom=13 
Т.е. координаты у нас:

55.807077920532535

37.62176946786539 

z = 13 


На данном участке карты имеются 4 компании которые надо отобразить по выше указанным координатам. 

Дамп базы MySQL:

Компания1   |   55.8158375, 37.6193351 
Компания2   |   55.802366410414585, 37.584571838378906 
Компания3   |   55.7914873, 37.592298 
Компания4   |   55.78062774182665, 37.660789489746094 

Как произвести вычисление ?
Может есть что то встроенное в карты или mysql? 

Все эти четыре компании находятся в окне где координаты 55.807077920532535, 37.62176946786539 
6 комментариев
Алексей Yarrr!
28 января 2016, 03:16

Руками это делать не нужно, используйте апи. Нужно создать и добавить объекты GeoPoint или Placemark на карту.

http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Placemark.xml

http://api.yandex.ru/maps/doc/jsapi/2.x/examples/

http://api.yandex.ru/maps/doc/jsapi/2.x/examples/markers.html

Алексей Yarrr!
28 января 2016, 03:16

Но если очень хочется руками, то http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/projection.wgs84Mercator.xml

Слепой я вероятно, не нашел что требуется.

В данный момет, передвигая карту, у меня меняется хеш коордитаны.
По ним мне требуется из базы тянуть метки через ajax.

В данный момент, при каждом движении карты у меня обновляется коллекция.
Но вот с запросом беда

 

SELECT  id , (6371                            * acos(                                     cos(radians(55.8158375))                                   * cos(radians(latitude))                                   * cos(radians(longitude) - radians(37.6193351))                                 + sin(radians(55.8158375)) * sin(radians(latitude))))                              AS distance                      FROM coords                    HAVING distance

 Тут я использую дистанцию. В данном случае она имеет 3км.


Вот решение


SELECT substring_index(t1.coordinates, ',', 1) AS latitude,

       substring_index(substring_index(t1.coordinates, ',', -1), ',', 1) AS longitude,

       (  (  ACOS(

                  SIN(55.760349906790154 * PI() / 180) * SIN(substring_index(t1.coordinates, ',', 1) * PI() / 180)

                +   COS(55.760349906790154 * PI() / 180)

                  * COS(substring_index(t1.coordinates, ',', 1) * PI() / 180)

                  * COS((37.703189849853516 - substring_index(substring_index(t1.coordinates, ',', -1), ',', 1)) * PI() / 180))

           * 180

           / PI())

        * 60

        * 1.1515) AS distance