简体   繁体   English

从MySQL数据库加载Heatmap LatLng坐标Google Maps API

[英]Load Heatmap LatLng Coordinates Google Maps API from MySQL database

I have project GIS. 我有项目GIS。 I want to create a hotspot crime mapping using Google Heatmap from Google Maps API. 我想使用Google Maps API中的Google Heatmap创建热点犯罪地图。 I have bunch of data of set crime location (including latitude and longitude) on MySQL database. 我在MySQL数据库上有一堆设置犯罪位置(包括纬度和经度)的数据。 I have read on Google Maps API Doc example: https://developers.google.com/maps/documentation/javascript/heatmaplayer . 我已经阅读了Google Maps API文档示例: https : //developers.google.com/maps/documentation/javascript/heatmaplayer

There is an example creating Heatmaps using function getPoints(), but with LatLng hardcoded, not from a database. 有一个使用getPoints()函数创建Heatmaps的示例,但是使用LatLng进行了硬编码,而不是从数据库中创建。 Any possible way to load LatLng from SQL database and array to new google.maps.LatLng? 从SQL数据库和数组将LatLng加载到新的google.maps.LatLng的任何可行方法?

This is my Heatmap Google Maps API source code: 这是我的Heatmap Google Maps API源代码:

 <script async defer src="https://maps.googleapis.com/maps/api/js?key=API&libraries=visualization&callback=initMap"> <div id="floating-panel"> <button onclick="toggleHeatmap()">Toggle Heatmap</button> <button onclick="changeGradient()">Change gradient</button> <button onclick="changeRadius()">Change radius</button> <button onclick="changeOpacity()">Change opacity</button> </div> <div id="map"></div> <script> var map, heatmap; function initMap() { map = new google.maps.Map(document.getElementById('map'), { zoom: 2, center: {lat: 51.508530, lng: -0.076132}, mapTypeId: 'satellite' }); heatmap = new google.maps.visualization.HeatmapLayer({ data: getPoints(), map: map }); } function toggleHeatmap() { heatmap.setMap(heatmap.getMap() ? null : map); } function changeGradient() { 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)' ] heatmap.set('gradient', heatmap.get('gradient') ? null : gradient); } function changeRadius() { heatmap.set('radius', heatmap.get('radius') ? null : 20); } function changeOpacity() { heatmap.set('opacity', heatmap.get('opacity') ? null : 0.2); } // This is the LatLng I meant, any possible way to load these from a database? function getPoints() { return [ new google.maps.LatLng(40.761916,-73.9228569), new google.maps.LatLng(42.35047,-71.07613), new google.maps.LatLng(42.3456382751,-71.0715713501), new google.maps.LatLng(42.3429222107,-71.078666687), new google.maps.LatLng(42.3450012207,-71.0808029175), new google.maps.LatLng(42.3429222107,-71.078666687), new google.maps.LatLng(42.35521698,-71.0732955933), new google.maps.LatLng(42.35521698,-71.0732955933), new google.maps.LatLng(42.3903999329,-71.1128997803), new google.maps.LatLng(42.3641662598,-71.0299758911), new google.maps.LatLng(43.6952018738,-79.285987854), new google.maps.LatLng(40.7427902222,-73.9834136963), new google.maps.LatLng(43.6991958618,-79.2756347656), new google.maps.LatLng(41.9590682983,-87.7312164307) ] } </script> 

Yes, You need to do following: 是的,您需要执行以下操作:

  1. Create a server side script that connects to database and runs query on your lat lng table. 创建一个服务器端脚本,该脚本连接到数据库并在经纬度表上运行查询。
  2. Create php code to format that result into a json array and throw it out to browser as json 创建php代码以将结果格式化为json数组,并将其作为json丢给浏览器
  3. Make an ajax call on client side to fetch this json from url 在客户端进行Ajax调用,以从网址获取此json
  4. Once ajax has returned with valid results simply iterate through it and if needed format it to similar object as you need in your getPoints function and instead of return long array simply return that object. 一旦ajax返回有效结果,只需对其进行遍历,并根据需要在getPoints函数中将其格式化为相似的对象,而不是返回长数组,只需返回该对象即可。
  5. Trigger the map refresh function (you will need to write this) may be based on a parameter that contains the object you created in 4 and then do all map functions. 触发地图刷新功能(您将需要编写此函数)可能基于包含您在4中创建的对象的参数,然后执行所有地图功能。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM