php - 使用坐标对查找半径的存储过程

标签 php mysql google-maps stored-procedures

我尝试过实现存储过程

DELIMITER $$
    CREATE PROCEDURE FindRadius(IN stop_lat float,IN stop_lng float,IN lat float,IN lng float,OUT radius float)
    BEGIN 
    declare R INT DEFAULT 6371;
    declare dLat float;
    declare dLon float;
    declare a float;
    declare c float;
    dLat = RADIANS(stop_lat-lat);  
    dLon = RADIANS(stop_lng-lng); 
     a =  SIN(dLat/2) * SIN(dLat/2) +COS(RADIANS(stop_lat)) * COS(RADIANS(lat)) * SIN(dLon/2) *SIN(dLon/2); 
     c = 2 * ATAN2(SQRT(a),SQRT(1-a)); 
    SET radius = R * c *1000; 
    END$$
    DELIMITER ; 

它抛出错误,表示您的 SQL 语法有错误;

弧度(stop_lat-lat); dLon = 弧度(stop_lng-lng); a = SIN(dLat/2) * SI' 第 8 行

我不知道为什么会出现这个错误,任何人都可以帮忙

最佳答案

你不应该这样做:

dLat = ....

应该是:

SET dLat = RADIANS(stop_lat-lat);  
SET dLon = RADIANS(stop_lng-lng); 
SET a =  SIN(dLat/2) * SIN(dLat/2) +COS(RADIANS(stop_lat)) * COS(RADIANS(lat)) * SIN(dLon/2) *SIN(dLon/2); 
SET c = 2 * ATAN2(SQRT(a),SQRT(1-a)); 

关于php - 使用坐标对查找半径的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17183808/

相关文章:

php - 在对象数组上使用 php 的 array_search

PHP 在不使用第 3 方代码的情况下同时使用客户端和服务器端验证

PHP - 检查表以查看条目是否存在

php - 使用php使用glob和数组将文件夹中的xml文件上传到Mysql

google-maps - Google map -街景静态图像

php - 计算两个经度和纬度之间的道路距离

mysql - 防止 Django 表单中的 SQL 注入(inject)

mysql - JMeter将CSV中的所有记录插入sql数据库

javascript - 当标记超出给定区域时如何收到警报

android - 找不到从方法 glt.a 引用的类 'com.google.android.gms.location.internal.ParcelableGeofence