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

Is it possible to display Google Maps circle without LatLong on the client

A​​irbnb 和 RelayRides 等网站向尚未预订商品的用户显示粗略的区域地图,因为确切地址(或 Lat Long)是敏感信息,应将其隐藏。这基本上是 circle 半径特征 Google 地图。

但是,是否可以在 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 需要提供给客户端的地图功能,因此必须出现在客户端上。这个假设是否正确?

是的,地图 api 需要一个位置,并且无论如何 return 都需要一个来自功能的位置,以便人们可以在控制台中看到它。

您可以使用 google 地图地理定位 api 来定位部分地址(例如区域或部分邮政编码)并将其结果用于您的经纬度?您可以选择要定位的部分,从而控制圆圈与真实地址的准确度。

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

另一种选择是热线方法。基本上,您预先创建了一堆多边形作为城镇的一部分(市中心、东侧、粗略南),然后,当您创建一个点时,运行 一个 $within 将您的点分配给某个多边形。 Return 多边形 & 没有人是更聪明的。

Meteor 特定点:非常确定您的发布功能中有一个 {fields: {latLng: 0}}