繁体   English   中英

提供中心纬度时,在 Google 地图上获取网格纬度

[英]Get latlng of grid on Google Maps when the centre latlng is provided

我有一个位置的纬度和经度。 我想以提供的 latlng 为中心构建一个由 9 (3x3) 点、16 (4x4) 点、25 (5x5) 点组成的网格。

提供了以英里为单位的附加距离参数(例如 100 英里),因此网格点之间的距离应相等。

它应该返回一个 9 或 16 或 25 个点的 latlng 数组,其中提供的 latlng 位于中心。

如何使用谷歌地图 API 实现这一目标?

请参阅屏幕截图以更好地理解这一点。 谢谢你。

在此处输入图像描述

X X X
X Y X
X X X

据我所知,您正在寻求的是从 Y 获得 X。

因此,首先,您需要学习如何在纬度和经度上加上公里。 Afaik 他们取决于 map 当前缩放多少(也称为缩放级别)

接下来你要做的是制作网格状结构

let grids = [
  [-1,0],
  [-1,1],
  [0,1],
  [1,1],
  [1,0],
  [1,-1],
  [0,-1],
  [-1,-1]
]

尝试在笛卡尔平面上想象这些点。 后面你会明白它的语义

现在让我们想象一下您的 Y = (100.0,999.0)。 这是一个任意点,仅用作示例。

const DISTANCE_LAT =  100 // in km
const DISTANCE_LONG = 100 // in km
let y = {lat: 100.0 long: 999.0)} // adjust your original coordinate
let new_coordinate = [];
let pi = 3.14159263
let radius = 6378

for(let point of grids){
    let new_lat = y.lat  + point[0] * (DISTANCE_LAT / radius) * (180 / pi);
    let new_long =   y.long  +  point[1] *  (DISTANCE_LONG / radius) * (180 / pi) / Math.cos(y.lat * 3.14159263/180);
    new_coordinates.push( {lat: new_lat, long: new_long} )
}

您成功地从原来的积分中获得了 9 分。 做类似的数学以获得 25 或任意数量的任意点:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM