gpt4 book ai didi

javascript - 谷歌热图包括点数

转载 作者:行者123 更新时间:2023-11-30 22:44:46 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com