我想通过计算点之间的距离来过滤我的gps点(减少显示的点数),如果距离小于300米,则不要将下一个点添加到地图中。
这是我当前创建标记和折线的javascript
var json = jQuery.parseJSON(data);
jQuery("#gMap").gmap3({ action: 'clear' });
jQuery(".marker").remove();
var counts = 0;
jQuery.each(json, function(i, item) {
var polyArray=[];
var name = item.name;
var userId = item.data.user;
jQuery.each(item.data.data, function(i, nav) {
var ts = nav.timestamp;
var lat = nav.latitude;
var long = nav.longitude;
if (lat != null && long != null) {
addMarker(name, counts = counts + 1, ts, lat, long, userId);
polyArray.push( [ lat, long]);
}
addPolyline(polyArray, get_random_color());
});
})
这是我在php中用来完成上述操作的旧版本 - 如何在我的javascript中完成相同的操作?
<?php
$old_lat = $old_long = "0";
$data = array();
foreach($history['data'] as $i => $record) {
$distance = distance($record['latitude'], $record['longitude'], $old_lat, $old_long, "V");
if($distance >= $_SESSION['same_position']) {
$last_i = $i;
$data[$i] = $record;
$old_lat = $record['latitude'];
$old_long = $record['longitude'];
} else {
$data[$last_i]['to_timestamp'] = $record['timestamp'];
$old_lat = $record['latitude'];
$old_long = $record['longitude'];
}
}
foreach($data as $record) {
echo 'add(jQuery(this), number += 1, "' . $record['timestamp'] . '", "' . $name . '", "' . $history['user'] . '", "' . $record['latitude'] . '", "' . $record['longitude'] . '", "' . $record['to_timestamp'] . '");';
}
?>
干杯!
答案 0 :(得分:0)
我没有看到你在那里计算什么(距离()在哪里?什么不能按预期工作?),但它不应该对你使用的map-API -version的PHP产生任何影响。< / p>
但是,您可以使用geometry-library计算客户端上的距离: