У меня есть база данных mysql с информацией о недвижимости. Любой намек на то, как я могу показать их на карте Google, но не все сразу? То есть я выбираю начальный адрес и тип свойства, и это показывает мне тот же тип в радиусе «х». После отображения маркеров вы можете фильтровать по типам, расположению и т. Д. Заранее спасибо
Чтобы видеть, действительно, когда он занимается с geometrГ-экспертом, нормально, чтобы координаты отнеслись друг к другу как DOUBLE. TambiГ©n он quitarГ - в использование механизма MyISAM, который estГЎ я кормлю досыта устаревший:
CREATE TABLE `markers` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 60 ) NOT NULL ,
`address` VARCHAR( 80 ) NOT NULL ,
`lat` DOUBLE NOT NULL ,
`lng` DOUBLE NOT NULL
) ;
, Сказанные это, у MySQL есть функции geomГ©tricas давно (с 5.6 я верю) и ты не нуждаешься в том, чтобы преобразовать с радио земли:
Например, беря этот руководитель google, podrГ-эксперта получать точки, которые estГЎn по крайней мере 50Km из точки {lat:-33.8, lng: 150.5}
SELECT id, name, lat, lng,
round(ST_Distance_Sphere(Point(lng,lat),Point(150.5,-33.8))) as distancia
FROM markers
WHERE ST_Distance_Sphere(Point(lng,lat),Point(150.5,-33.8))<50000
Этого равняется тому, чтобы делать одним cГ-rculo 50Km касательно упомянутой точки.
, Чтобы работать с geometrГ-экспертом сложные, (polГ-gonos административных подразделений, например) привыкает сохранять ее geometrГ - в как бинарный и не как текст. В общем эта дисциплина занимается mГЎs хорошо с PostgreSQL и Ваш extensiГіn PostGIS, которые состоят mГЎs работоспособные и консистентные в том, что функции MySQL, но не estГЎ mГЎs пример.
Давайте Говорить, что сейчас у таблицы есть поле типа geometrГ - в:
CREATE TABLE `markers` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 60 ) NOT NULL ,
`address` VARCHAR( 80 ) NOT NULL ,
`lat` DOUBLE NOT NULL ,
`lng` DOUBLE NOT NULL,
geom GEOMETRY
) ;
DespuГ©s наполнения ее с данными о google, мы обновляем ее:
UPDATE markers set geom=Point(lng,lat);
Сейчас podrГ-схвати, консультироваться прямо относительно поля, не вычисляя точки для каждой линии:
SELECT id,
name,
st_y(geom) as lat,
st_x(geom) as lng,
round(ST_Distance_Sphere(geom,Point(150.5,-33.8))) as distancia
FROM markers
WHERE ST_Distance_Sphere(geom,Point(150.5,-33.8))<50000
В обоих случаях результат - тот же самый:
|id | name | lat | lng |dist. |
|---|----------------------|-----------|----------|------|
| 2 | BeeYourself Clothing |-33.729752 |150.83609 | 32035|
| 3 | Dress Code |-33.949448 |151.008591| 49807|
| 5 | Fashiontasia |-33.944489 |150.854706| 36476|
| 8 | Buena Ropa! |-33.815521 |151.026642| 48688|
| 9 | Coxcomb and Lily... |-33.829525 |150.873764| 34686|