php - 您将如何使用元值来模仿此 Google map 查询?

标签 php mysql sql wordpress google-maps

这里有一个使用 Google map 作为商店定位器的绝妙示例:http://code.google.com/apis/maps/articles/phpsqlsearch_v3.html

该示例使用一个包含 3 列的简单表格 - 地址、纬度、经度。

我正在尝试使用每个新位置的自定义帖子类型将其集成到 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 元数据中工作?

最佳答案

我已经弄清楚了 - 这是 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

关于php - 您将如何使用元值来模仿此 Google map 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5614418/

相关文章:

PHP + MySQL : is it safe to use serialize() without addslashes()?

MySQL架构(分层数据)

php - Mysql 查询和 $con

sql - 这在 Postgresql 中有什么作用:xmax::text::int > 0

php - 根据匹配字段,使用另一个数据库中的数据更新 MySQL 数据库表

PHP 使用数组值截断和删除问题

php登录表单和提交按钮

php - 使用数组更新 SQL 查询

mysql - 将子查询中带有 LIMIT 的 SQL 查询转换为 Hibernate

php - 只有下一个和上一个按钮的简单分页