如何从谷歌地图圆形获取经纬度及A、B、C、D点位的经纬度
嘿,我来帮你搞定谷歌地图里的经纬度获取问题,分两部分给你讲得明明白白:
获取谷歌地图圆形区域的经纬度信息
谷歌地图里的圆形区域核心信息其实是圆心经纬度和半径,如果需要边界上的经纬度点,也有对应的方法:
手动操作场景(非开发)
- 先拿圆心坐标:打开谷歌地图,右键点击你想设为圆心的位置,选择「这里的坐标」,就能直接复制到圆心的经纬度(格式一般是「纬度, 经度」)。
- 绘制并获取半径:点击左侧「添加图层」,选择「画圆」工具,点击圆心后拖动鼠标调整大小,地图上会实时显示半径数值(支持公里/英里切换)。如果要精确设置半径,绘制完成后右键圆形选「编辑」,在面板里输入精确数值就行。
- 提取边界经纬度点:要是需要圆形边界上的一系列经纬度,可以按F12打开浏览器开发者工具,点击地图上的圆形,在Elements面板里找到对应的GeoJSON数据,里面会包含边界的坐标数组,直接复制使用即可。
开发场景(API实现)
如果是做开发需求,用Google Maps JavaScript API就能轻松搞定:
- 创建圆形对象,传入圆心和半径(注意半径单位是米):
const circle = new google.maps.Circle({ center: { lat: 37.7749, lng: -122.4194 }, // 示例:旧金山坐标 radius: 1000, // 1000米 map: map // 你的地图实例 }); - 获取核心信息:调用
circle.getCenter()拿到圆心经纬度,circle.getBounds()获取圆形的边界范围(西南、东北两个角的经纬度)。 - 生成边界点:如果需要生成圆形边界上的多个经纬度点,可以通过几何计算实现,比如每1度取一个点:
const center = circle.getCenter(); const radius = circle.getRadius(); const boundaryPoints = []; const metersPerLatDegree = 111320; // 1度纬度约等于111320米 const metersPerLngDegree = 111320 * Math.cos(center.lat() * Math.PI / 180); for (let angle = 0; angle < 360; angle += 1) { const rad = (angle * Math.PI) / 180; const lat = center.lat() + (radius * Math.sin(rad)) / metersPerLatDegree; const lng = center.lng() + (radius * Math.cos(rad)) / metersPerLngDegree; boundaryPoints.push({ lat, lng }); } // boundaryPoints里就是圆形边界的经纬度数组
获取圆形区域内指定位置A、B、C、D的经纬度
不管这些点是不是在圆形里,获取单个点经纬度的方法都很直接,之后再验证是否在区域内就行:
手动操作场景
- 打开谷歌地图,找到你要标记的位置A(比如建筑、路口)。
- 右键点击该位置,选择「这里的坐标」,弹窗里会显示经纬度,直接复制就好。
- 重复上面的步骤,依次拿到B、C、D的经纬度。
- 验证是否在圆形内:把复制的经纬度粘贴到谷歌地图搜索框,看标记点是否落在你之前画的圆形里就行。
开发场景(批量获取+验证)
如果这些位置是已知名称(比如“XX商场”),可以用Geocoding API先转成经纬度,再判断是否在圆形区域内:
const geocoder = new google.maps.Geocoder(); const circleCenter = { lat: 37.7749, lng: -122.4194 }; const circleRadius = 1000; // 1000米 // 封装获取并验证的函数 function getLocationAndCheck(address, label) { geocoder.geocode({ address: address }, (results, status) => { if (status === google.maps.GeocoderStatus.OK) { const loc = results[0].geometry.location; // 计算点到圆心的距离(单位:米) const distance = google.maps.geometry.spherical.computeDistanceBetween(loc, circleCenter); if (distance <= circleRadius) { console.log(`${label}的经纬度:(${loc.lat().toFixed(6)}, ${loc.lng().toFixed(6)}),在圆形区域内`); } else { console.log(`${label}的经纬度:(${loc.lat().toFixed(6)}, ${loc.lng().toFixed(6)}),不在圆形区域内`); } } else { console.log(`无法获取${label}的坐标:${status}`); } }); } // 调用函数获取A、B、C、D的坐标 getLocationAndCheck("位置A的具体名称", "A"); getLocationAndCheck("位置B的具体名称", "B"); getLocationAndCheck("位置C的具体名称", "C"); getLocationAndCheck("位置D的具体名称", "D");
内容的提问来源于stack exchange,提问作者ISURU UDAYANGA BANDARA
相关产品推荐
相关产品推荐

