Linux日志
PHP记事本
JS记事本
数据库
团队资讯

laravel通过mysql实现经纬度计算(实现搜索附近的人)

分类:数据库 发布时间:2017-05-30 10:39:44 阅读:作者:郑祥景

一、建表

CREATE TABLE address (
 
    address CHAR(80) NOT NULL,
 
    address_loc POINT NOT NULL,
 
    PRIMARY KEY(address)
 
);

二、添加索引

ALTER TABLE address ADD SPATIAL INDEX(address_loc);

三、插入数据

INSERT INTO address VALUES('Foobar street 12', GeomFromText('POINT(30.620076 104.067221)'));
 
INSERT INTO address VALUES('Foobar street 13', GeomFromText('POINT(31.720076 105.167221)'));

四、查询

public function mysql(AddressMysql $address)
{
    $result = [];
    $values = DB::select('SELECT address,AsText(address_loc) FROM address WHERE MBRContains(LineString(Point(118.60036234 + 10 / ( 111.1 / COS(RADIANS(24.90165238))), 24.90165238 + 10 / 111.1),Point(118.60036234 - 10 / ( 111.1 / COS(RADIANS(24.90165238))), 24.90165238 - 10 / 111.1)), address_loc)');

    foreach ($values as $key => $value) {
        $value = (array)$value;
        $result[$key]['address'] = $value['address'];
        $result[$key]['address_loc'] = $value['AsText(address_loc)'];
    }

    dd($result);
}

参考:http://justcode.ikeepstudying.com/2015/07/mysql-lbs%E5%AE%9E%E7%8E%B0%E6%9F%A5%E6%89%BE%E9%99%84%E8%BF%91%E7%9A%84%E4%BA%BA/

  

   编辑:郑祥景

[随享社区版权所有 未经许可不得转载 ]

返回首页


推荐
Linux日志
PHP记事本
JS记事本
数据库
团队资讯
在线客服随享宝宝
有任何问题,都可以戳我反馈哦!
微信公众号 方便 快速
扫描二维码 关注公众号

版权所有:天妖云/随享社区V5.2 beta Copyright 2015-2019 TIAYO.COM Inc. All rights reserved.