我有一个巨大的数据点文件,我想加载它们。我正在使用Leaflet(前端)/Node.Js(后端)
我想加载边框内的数据。 我有两个选择:
现在我想在移动浏览器时加载数据,对我来说令人困惑的部分是,如何从前端的每次移动中每次加载文件
移动/缩放页面(前端)---->获得边界 - >在Node.JS Side(后端) - >通过使用ORM查询PostGis加载数据 - >把它写在geojson文件上--->使用前端部分绘制数据
main.js
1-检测移动/放大 ... map.on(' dragend',getPins); map.on(' zoomend',getPins); ......
function getPins(e){
bounds = map.getBounds();
var latMax = map.getBounds().getNorthEast().lat();
var lngMax = map.getBounds().getNorthEast().lng();
var latMin = map.getBounds().getSouthWest().lat();
var lngMin = map.getBounds().getSouthWest().lng();
var centerLATT = map.getCenter().lat();
var centerLON = map.getCenter().lng();
var centerZOOM = map.getZoom();
}
Node.Js / Express
var express = require('express');
var app = new express();
app.use(express.json());
app.use(express.static(__dirname + '/public'));
var port = Number(process.env.PORT || 5000);
app.listen(port);
2-节点模块,用于从此thread
返回PostGIS查询我想通过从Postgis加载来更新这一点
var postgeo = require("postgeo");
postgeo.connect("postgres://user@host:port/database");
postgeo.query(
'SELECT gid,name,ST_X(the_geom) as longitude,ST_Y(the_geom) as latitude FROM GeoDataTable WHERE ST_Intersects( ST_MakeEnvelope('+latMax+", "+lngMax+", "+latMin+", "+lngMin" ', function(data) {
for(i=0; i<data.rows.length; i++){
var feature = new Feature();
feature.geometry = JSON.parse(result.rows[i].locale);
feature.properties = {"TTL", result.rows[i].ttl};
featureCollection.features.push(feature);
}
});
问题是如何将latMax,lngMax,latMin,lngMin从前端传递到后端,并自动将从数据库加载的json文件从后端传递到前端。
答案 0 :(得分:-2)
您可以使用socket.io与node.js服务器实时与浏览器进行通信。
你的问题很通用,所以这里需要很多编码来解决你的问题,但基本上你可以使用socket.io库中的socket.emit
函数将数据从浏览器发送到服务器,并将服务器返回浏览器。