如何使用隐藏数据创建地图布局?

问题描述 投票:1回答:2

我为个人项目创建了一个API,该API返回了一些GeoJSON数据。

[目前,此数据基本上已返回给客户端以显示在地图上。但是,客户端(显然)具有对返回数据的完全访问权限,并且它必须自己实现必要的Javascript才能显示它。

类似:

$.ajax({
    url: "url/to/my/api",
    type: "POST",
    data: JSON.stringify({ /* some parameters */ }),
    contentType: 'application/json',
}).done(function(data) {
    data.addTo(map); 
    //data contains all the geo-coordinates, visible in browser console, that I'd like to hide
});

问题:是否有任何方法可以“模糊处理”数据,以使客户端在地图上显示数据,但拒绝他查看数据的权利?

例如,Google Maps API实现了一些traffic layer,我们无法查看构成地铁线路的数据,只需显示它即可:

var transitLayer = new google.maps.TransitLayer();
transitLayer.setMap(map);

如何实现类似的功能,以将返回的数据“隐藏”给客户端,并让他有可能在地图上显示它?

谢谢

javascript api maps geojson data-layers
2个回答
0
投票

Gmaps不会将任何运输数据“返回”给客户端-一旦将transitLayer设置为地图实例,它就会[[重新生成图像图块:

enter image description here

vs。

enter image description here


[有很多(地理)JSON uglifiers /混淆器,其中最简单的可能是在后端进行base64编码(技术上只是琐碎的视觉混淆器),然后在前端使用atob进行解码。

示例:atobb64编码为{"type":"FeatureCollection","features":[]}。但是请注意,周围的每个人都可以通过此页面看到...

甚至在考虑混淆之前,请确保您的API端点是安全的并且具有正确的CORS标头。其次,您可能想要跟踪谁访问了您的API以及何时访问。

此后,这成为一个密码问题,而不是geojson问题!


0
投票
您无法获得JS所使用的任何浏览器的绝对安全性。不管编码数据有多困难,都必须先对其进行解码,然后JS地图呈现引擎才能使用它,这是任何有兴趣的人都将在其中拦截的地方。

可能唯一可靠的方法是使您的API能够提供客户将在其地图上放置的预制图像叠加层。如果是GMap,则可以使用eyJ0eXBlIjoiRmVhdHVyZUNvbGxlY3Rpb24iLCJmZWF0dXJlcyI6W119

© www.soinside.com 2019 - 2024. All rights reserved.