目前,我已經創建了一個頁面,顯示谷歌地圖上用戶的所有位置(全部來自MySQL數據庫)。但是因爲有5000多個用戶位置,加載該頁面需要很長時間。在谷歌地圖上查詢來自MySQL的位置數據
我想通過僅查詢特定區域內的用戶位置來提高效率。 (我正在查看的區域)
我能做些什麼來提高效率?谷歌地圖API是否支持我想要的功能?我聽說我可以做geofencing mysql,但我真的找不到如何使用它。
預先感謝您。
目前,我已經創建了一個頁面,顯示谷歌地圖上用戶的所有位置(全部來自MySQL數據庫)。但是因爲有5000多個用戶位置,加載該頁面需要很長時間。在谷歌地圖上查詢來自MySQL的位置數據
我想通過僅查詢特定區域內的用戶位置來提高效率。 (我正在查看的區域)
我能做些什麼來提高效率?谷歌地圖API是否支持我想要的功能?我聽說我可以做geofencing mysql,但我真的找不到如何使用它。
預先感謝您。
可能有很多方法可以做你想做的。如果你有用戶的經度和緯度(聽起來像你這樣做),然後代替加載所有用戶位置(select latitude, longitude from users)
,然後通過指定用戶座標的範圍來縮小位置,所以你的選擇看起來像這樣(在僞查詢)
select latitude, longitude from users where latitude between (user.latitude + whateverrangeyouwant and user.latitude - whateverrangeyouwant) AND longitude between (user.longitude + whateverrangeyouwant AND user.longitude - whateverrangeyouwant);
範圍大概可以從map.bounds財產採取
然後,您可以使用服務的話,將從地圖中刪除標記,並添加發送回給你的腳本一個基於您的服務響應。因此,您的JavaScript看起來像這樣(以僞代碼)
get user location; send service request for user locations and get them back in an array remove current markers add new markers from service result
PHP中的服務可能是這個樣子:
$minLat = $_REQUEST['lat'] - ($_REQUEST['dl']/2);
$maxLat = $_REQUEST['lat'] + ($_REQUEST['dl']/2);
$minLon = $_REQUEST['lon'] - $_REQUEST['dln'];
$maxLon = $_REQUEST['lon'] + $_REQUEST['dln'];
$query = 'SELECT locations.latitude,
locations.longitude
FROM locations
WHERE (latitude BETWEEN ' . $minLat . ' AND ' . $maxLat . ') AND
(longitude BETWEEN ' . $minLon . ' AND ' . $maxLon. ')';
}
$query = DB::query($query);
$json = array();
while($location = $query->fetch_assoc()) {
$json[] = $location;
}
header('Content-Type: application/json');
echo json_encode($json);
exit();
希望有所幫助。
感謝您的建議^^ –
什麼是你的地圖的中心?用戶或固定點的當前位置? – Ares
@Ares地圖的中心位置是用戶正在查看的當前位置。 –
你如何找回JavaScript的位置?你使用什麼後端語言? – Ares