PHP到Javascript数组和GPS位置


PHP to Javascript Arrays and GPS locations

我正在制作一个脚本,希望主要是PHP,所以以后不需要Javascript,但现在我被困在一些事情。

  1. 存储GPS位置的最佳方法是什么,然后比较它们?我可以将它们存储在数据库中(目前使用MySQL),然后找到附近有一些代码的人,但我担心这会非常密集,特别是如果数据库中有很多值。这应该在服务器上执行,我现在正在使用PHP。

  2. 我如何获得这些数据,然后在谷歌地图中表示它?我目前有我的代码工作时,我已经把数据,但我想从数据库中获得这些数据。如果用户在一个谷歌地图视图上放置100个标记来代表世界上所有的人,会不会要求太多?或者我应该只和特定区域内的人在一起?我现在的代码是:

    var people = [ ['Type1', -33.890542, 151.274856],
                   ['Type2', -33.923036, 151.259052],  
                   ['Type2', -34.028249, 151.157507],  
                   ['Type2', -33.80010128657071, 151.28747820854187],  
                   ['Type1', -33.950198, 151.259302]
                 ];
    

    每个"类型"显示不同的图像,所以我需要从数据库中提取类型,长度和长度,并将它们放入这个Javascript数组中。

我知道这里有一些问题,我是javascript和Maps这方面的新手:)

1。你的第一个问题

上周我必须解决类似的问题,我是这样做的。
假设我在MySQL数据库中有一些办公室的GPS坐标(gps_lat, gps_lon),我想根据它们到我当前位置($latitude, $longtitude)的距离(km)对它们进行排序。

// MySQL query in PHP
// btw, I'm storing GPS coordinates in decimal format like 51.123234
$varA = "(POW(SIN((gps_lat - $latitude) / 2 * 0.017453293), 2) + COS($latitude * 0.017453293)
        * COS(gps_lat * 0.017453293) * POW(SIN((gps_lon - $longtitude) / 2 * 0.017453293), 2))";
    
$query = "SELECT *, (6378.140 * 2 * ATAN2(SQRT($varA), SQRT(1-$varA))) AS distanceInKm ";
$query += 'FROM Office ORDER BY distanceInKm'); 
$mysqli->query($query);
// ...
// the magic constant 0.017453293 is PI / 180 (just check the link below).

也许看看这个链接推导哈弗斯公式,它帮助了我很多。我知道这在SQL中看起来很奇怪。$varA只是重复两次的公式的一部分。上面链接中的原始公式是这样的:

dlon = lon2 - lon1
dlat = lat2 - lat1
a = (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2
c = 2 * atan2(sqrt(a), sqrt(1-a)) 
d = R * c