Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌热图,包括点数_Javascript_Php_Mysql_Geolocation_Heatmap - Fatal编程技术网

Javascript 谷歌热图,包括点数

Javascript 谷歌热图,包括点数,javascript,php,mysql,geolocation,heatmap,Javascript,Php,Mysql,Geolocation,Heatmap,我有谷歌热图的工作代码。快速概述其功能: 1) 查询mysql数据库以拉取所有记录的lat/long(最初) 2) 下拉选择框允许过滤(基本上只是修改PHP中的SQL查询) 3) Heatmap是一个Json数组(使用php Json_编码($SQL_结果)) 因此,我现在拥有的代码工作得非常完美——不过,我希望在地图上添加更多内容 我的问题是-是否可以提取特定位置的所有结果计数(我使用邮政编码生成lat/long)并在热图上显示它们 例如:;位置x的100个结果。。。当你放大并驱散热图时,它会

我有谷歌热图的工作代码。快速概述其功能:

1) 查询mysql数据库以拉取所有记录的lat/long(最初) 2) 下拉选择框允许过滤(基本上只是修改PHP中的SQL查询) 3) Heatmap是一个Json数组(使用php Json_编码($SQL_结果))

因此,我现在拥有的代码工作得非常完美——不过,我希望在地图上添加更多内容

我的问题是-是否可以提取特定位置的所有结果计数(我使用邮政编码生成lat/long)并在热图上显示它们

例如:;位置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>

var位置=[];
var-coords=;
对于(变量i=0;i
所以,我想我看的是错误的方法-我最初的想法是从返回行的DB中提取一个计数,并显示一个带有动态文本的自定义标记。我找到的解决方案(实现起来非常简单!)是使用MarkerClusterer.js的谷歌标记集群。对我来说,我刚刚下载了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);
}
差不多就是这样——当我放大时,我得到了计数的变化,现在我只需要在infowindows中使用自定义标记。希望这能帮助其他处于同样情况的人

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

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