【问题标题】:best way to determine proximity to location with a list of latlng with Google Map API使用 Google Map API 使用 latlng 列表确定位置接近度的最佳方法
【发布时间】:2014-04-06 15:12:37
【问题描述】:

我在 2 天的最后期限内(我知道我自己的撤消),我需要在 Wordpress 中实现一个功能,该功能可以搜索一堆包含自定义内容的帖子,这些内容包含 wp_postmeta 中已知字段中的位置, (未进行地理编码)并根据与特定地理编码的接近度(即 20 英里内)显示它们的列表。

我对 WP 查询没有任何问题 - 我只是对 Google Map API 有点陌生,而且关于地理编码的文档并不是非常简单,我认为我必须这样做才能确定接近度。

此外,我假设我只需要遍历每个帖子的列表,如果它们满足邻近要求,则一次确定一个。

我不是要求有人为我做这件事,除非你愿意为我做这件事——我只需要快速指出正确的方向。我找不到任何知道如何做到这一点的人 - 而且我有一些预算......

【问题讨论】:

  • 我是否因为正在寻找方向而被否决?因为我犯了一个愚蠢的错误并预订了一场我毫无准备的演出?我希望得到一些反馈。

标签: php mysql wordpress google-maps-api-3


【解决方案1】:

几天前我正在研究类似的东西。如何使用快速 SQL 查询处理 4M 的地理位置记录数据库。

this page + this pdf 提供了帮助。

取决于您在数据库中存储的内容,但每次迭代每个帖子都会很慢。您需要将地理位置查询卸载到 SQL 级别。

PS我知道只有链接的回复是不受欢迎的......

【讨论】:

    【解决方案2】:

    这里有两个你需要修改的启动脚本

    PHP

    function buildGeocode($address_1, $address_2, $city, $state, $zip_code, $country){
    
            $base_url = "http://maps.googleapis.com/maps/api/geocode/json";
    
            $address = $address_1 . ' ' . $address_2 . ', ' . $city . ' ' . $state . ' ' . $zip_code . ' ' . $country;
    
            $request_url = $base_url . "?address=" . urlencode($address) . "&sensor=false";
    
            $data = json_decode(file_get_contents($request_url), true);
    
            return array('lat' => $data['results'][0]['geometry']['location']['lat'], 'lng' => $data['results'][0]['geometry']['location']['lng']);
    
    }
    

    MySQL

    "SELECT SQL_CALC_FOUND_ROWS
                *
                FROM (SELECT location_tbl.*, ( 3959*(2*ASIN(SQRT(POW(SIN(((location_tbl.lat-" . $lat . ")*(PI()/180))/2),2)+COS(location_tbl.lat*0.017453293)*COS(" . $lat . "*0.017453293)*POW(SIN(((location_tbl.lng-" . $lng . ")*(PI()/180))/2),2)))) ) AS distance
                    FROM location_tbl
                WHERE location_tbl.active = 1 AND location_tbl.deleted = 0) AS tmp_tbl
            WHERE distance <= '" . $dis . "'
            ORDER BY distance ASC"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      相关资源
      最近更新 更多