javascript - 谷歌热图包括点数

标签 javascript php mysql geolocation heatmap

我有我的谷歌热图的工作代码。快速了解它的作用:

1) 查询 mysql 数据库以提取所有记录的纬度/经度(最初) 2)下拉选择框允许过滤(基本上只是修改PHP中的SQL查询) 3)热图是一个Json数组(使用php json_encode($SQL_Results))

所以我现在拥有的代码可以完美运行 - 但是,我希望向 map 添加更多内容。

我的问题是 - 是否可以对特定位置的所有结果进行计数(我使用邮政编码生成纬度/经度)并将它们显示在热图上?

一个例子是;位置 x 的 100 个结果......当您放大并消散热图时,它会修改数字。

我曾尝试寻找类似的功能,但只能找到有关向结果添加标记/图像的信息 - 我需要从结果中显示动态数字。

如有任何帮助/建议,我们将不胜感激。

这是我用来创建热图的相关代码:

<?PHP
$LatLng = "select inp.lat, inp.long from locations inp";
$results = db_query($LatLng);

$mapCoords = mysqli_fetch_all($results, MYSQLI_ASSOC);

?>

<script type="text/javascript">

var places = [];
var coords = <?php echo json_encode($mapCoords); ?>;

for (var i = 0; i < coords.length; i++) {
    places.push(new google.maps.LatLng(coords[i].lat, coords[i].long));
}

var map, pointarray, heatmap;
var gradient = [
        'rgba(0, 255, 255, 0)',
        'rgba(0, 255, 255, 1)',
        'rgba(0, 191, 255, 1)',
        'rgba(0, 127, 255, 1)',
        'rgba(0, 63, 255, 1)',
        'rgba(0, 0, 255, 1)',
        'rgba(0, 0, 223, 1)',
        'rgba(0, 0, 191, 1)',
        'rgba(0, 0, 159, 1)',
        'rgba(0, 0, 127, 1)',
        'rgba(63, 0, 91, 1)',
        'rgba(127, 0, 63, 1)',
        'rgba(191, 0, 31, 1)',
        'rgba(255, 0, 0, 1)'
    ];

var Data = places;

function initialize() {
        var mapOptions = {
            zoom: 6,
            center: new google.maps.LatLng(54.892473,-2.932931),    
            mapTypeId: google.maps.MapTypeId.ROADMAP 
        };

        map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

        pointArray = new google.maps.MVCArray(Data);

        heatmap = new google.maps.visualization.HeatmapLayer({
            data: pointArray,
            dissipating: true,
            radius: 35

        });

        heatmap.setMap(map);
        heatmap.set('gradient', heatmap.get('gradient') ? null : gradient);
        heatmap.set('opacity', '0.9');
    }

google.maps.event.addDomListener(window, 'load', initialize);

</SCRIPT>

最佳答案

因此,我认为我采用了错误的方法 - 我最初的想法是从数据库中提取返回行的计数并显示带有动态文本的自定义标记。我找到的解决方案(并且实现起来非常简单!)是使用 MarkerClusterer.js 的 Google 标记聚类。对我来说,我只是下载了 JS,在我的代码中指向它并添加了以下内容:

<script type="text/javascript" src="MarkerClusterer.js"></script> 
var places = [];
var markers = [];

var coords = <?php echo json_encode($mapCoords); ?>;

for (var i = 0; i < coords.length; i++) {
    places.push(new google.maps.LatLng(coords[i].lat, coords[i].long));
    var latLng = new google.maps.LatLng(coords[i].lat, coords[i].long);
    var marker = new google.maps.Marker({'position': latLng});
    markers.push(marker);
}

`

最后设置集群并添加一些选项:

var mcOptions = {gridSize: 50, maxZoom: 15};

var markerCluster = new MarkerClusterer(map, markers, mcOptions);

差不多就是这样 - 当我放大时,我得到了计数的变化,现在我只需要使用信息窗口处理自定义标记。希望这对处于相同情况的其他人有所帮助。

关于javascript - 谷歌热图包括点数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29948018/

相关文章:

php - Jwplayer 视频播放器不工作

javascript - 当用户登录时,django 中是否有可能将用户主动登录的浏览器名称存储在数据库中?

javascript - 在 PHP 中使用 javascript 变量

java - [EBean][PlayFramewrok 2.5] ID 未从数据库加载

mysql - 错误 1452 : Cannot add or update a child row: a foreign key constraint fails

Javascript 计时器和页脚 div

php - 找到离给定地址最近的位置

php - 通过关系发现了一个新实体 - 仅从形式

javascript - Web 应用程序到 Android 应用程序

javascript - Mongoose,使用查找选择特定字段