Airbnb和RelayRides等网站向尚未预订该项目的用户显示粗略的区域地图,因为确切的地址(或Lat Long)是敏感的,应该隐藏。这基本上是circle半径功能谷歌地图。
但是,如果没有Lat / Long到达客户端浏览器,是否可以这样做?
GoogleMaps.ready('exampleMap', function(map) {
// Add a marker to the map once it's ready
var marker = new google.maps.Marker({
position: new google.maps.LatLng(-37.478644, 144.9631), // This is sensitive. If there is any way to hide it on the client.
map: map.instance,
icon: '/map-icon.png'
});
});
我猜测确切的位置只是在视觉上隐藏,但Lat / Long需要提供给客户端的Maps功能,因此必须在客户端上。这个假设是否正确?
答案 0 :(得分:1)
在您的数据库中,当创建每个点时,调用一个函数来缓冲该点(即在该点周围创建一个圆)。然后,不是将latlng发送到客户端,而是发送多边形。如果您不确定数学(测地线很难),turf.js库对此有好处。缺点是任何有脑和脑的人。太多时间可以很容易地计算出中心。即使你随机化了这一点,我也可以重新运行计算,确定stdev,然后只需浏览器控制台即可找到它。 Excel中。随机不是你的朋友,因为随机的承诺会伤害你。
另一个选择是hotwire方法。基本上,您预先创建一组多边形作为城镇的一部分(市中心,东侧,粗略南方),然后,当您创建一个点时,运行$within
将您的点指定给某个多边形。返回多边形&没有人是明智的。
流星特定点:确保您的发布功能中有{fields: {latLng: 0}}
。
答案 1 :(得分:0)
是的,地图api需要一个位置,无论如何都会从功能中返回一个,这样人们就可以在控制台中看到它。
您可以使用google maps geolocation api对地址的一部分进行地理定位(例如区域或部分邮政编码),并将结果用于您的latlong?您可以选择要进行地理定位的部分,从而控制圆与实际地址的准确程度。