是否可以在客户端上显示没有LatLong的Google地图圈

时间:2015-04-08 08:46:42

标签: javascript google-maps google-maps-api-3 meteor maps

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功能,因此必须在客户端上。这个假设是否正确?

2 个答案:

答案 0 :(得分:1)

在您的数据库中,当创建每个点时,调用一个函数来缓冲该点(即在该点周围创建一个圆)。然后,不是将latlng发送到客户端,而是发送多边形。如果您不确定数学(测地线很难),turf.js库对此有好处。缺点是任何有脑和脑的人。太多时间可以很容易地计算出中心。即使你随机化了这一点,我也可以重新运行计算,确定stdev,然后只需浏览器控制台即可找到它。 Excel中。随机不是你的朋友,因为随机的承诺会伤害你。

另一个选择是hotwire方法。基本上,您预先创建一组多边形作为城镇的一部分(市中心,东侧,粗略南方),然后,当您创建一个点时,运行$within将您的点指定给某个多边形。返回多边形&没有人是明智的。

流星特定点:确保您的发布功能中有{fields: {latLng: 0}}

答案 1 :(得分:0)

是的,地图api需要一个位置,无论如何都会从功能中返回一个,这样人们就可以在控制台中看到它。

您可以使用google maps geolocation api对地址的一部分进行地理定位(例如区域或部分邮政编码),并将结果用于您的latlong?您可以选择要进行地理定位的部分,从而控制圆与实际地址的准确程度。