Как бы вы использовали мета-значение для имитации этого запроса Google Maps? - PullRequest
1 голос
/ 11 апреля 2011

Вот замечательный пример использования карт Google для определения местоположения магазина: http://code.google.com/apis/maps/articles/phpsqlsearch_v3.html

В примере используется простая таблица с 3 столбцами: адрес, широта, долгота.

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

Что мне трудно сделать, так это потянуть эти данные / запросы для преобразования в XML так же, как это делает пример Google.

Было бы неплохо просто сохранить все данные в пользовательских сообщениях WordPress без созданияцелая отдельная таблица для ее обработки.

Вот стандартный пример запроса:

// Search the rows in the markers table
$query = sprintf("SELECT address, name, lat, lng, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20",
  mysql_real_escape_string($center_lat),
  mysql_real_escape_string($center_lng),
  mysql_real_escape_string($center_lat),
  mysql_real_escape_string($radius));
$result = mysql_query($query);

Как бы вы подходили, подражая этому, работать в метаданных WordPress CPT?

1 Ответ

2 голосов
/ 27 мая 2011

Я понял - это SQL-запрос:

SELECT  wp_posts.post_title as name, 
address.meta_value as address,
 latitude.meta_value as lat,
 longitude.meta_value as lng,
 telephone.meta_value as telephone,

   ( 3959 * acos(
    cos( radians( '%s' ) ) *
    cos( radians( CONVERT( latitude.meta_value, DECIMAL( 10, 6 ) ) ) ) *
    cos( radians( CONVERT( longitude.meta_value, DECIMAL( 10, 6 ) ) ) - radians( '%s' ) ) +
    sin( radians( '%s' ) ) * sin( radians( CONVERT( latitude.meta_value, DECIMAL( 10, 6 ) ) ) )
     ) ) AS distance

 FROM wp_posts
 LEFT JOIN wp_postmeta AS address ON(
 wp_posts.ID = address.post_id
 AND address.meta_key = '_dealer_address'
 )
 LEFT JOIN wp_postmeta AS latitude ON(
 wp_posts.ID = latitude.post_id
 AND latitude.meta_key = '_dealer_latitude'
 )
 LEFT JOIN wp_postmeta AS longitude ON(
 wp_posts.ID = longitude.post_id
 AND longitude.meta_key = '_dealer_longitude'
 )
 LEFT JOIN wp_postmeta AS telephone ON(
 wp_posts.ID = telephone.post_id
 AND telephone.meta_key = '_dealer_telephone'
 )
 WHERE wp_posts.post_type = 'dealers' HAVING distance < '%s' ORDER BY distance LIMIT 0 ,      20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...