Bla*_*yyy 2 geojson reverse-geocoding
我有一个项目需要确定某个位置(纬度和经度)的描笼涯(barrio/细分)。有没有我可以使用的 API?
在菲律宾,地址必须包含描笼涯。地址的示例格式如下[House No.][Street][Barangay][City][Region]。我尝试在 Google Maps API 和 LocationIQ API 中搜索,但响应不包括描笼涯。
不幸的是,我没有找到任何提供此数据的 Maps API。但我确实找到了一种解决方法,方法是从geojsonph (采用GeoJson 格式)getContainers()获取所有描笼涯的多边形,然后使用geojson-geometries-lookup 的库检查坐标是否在该多边形内。
// getBarangay.js
import GeoJsonGeometriesLookup from 'geojson-geometries-lookup'
import geoJson from 'Barangays.json'
export default function(lat, long) {
const glookup = new GeoJsonGeometriesLookup(geoJson)
const point = {type: "Point", coordinates: [long, lat]}
const containersCount = glookup.countContainers(point)
if(containersCount == 0){
// no barangays found
return null
}else{
// coordinate is inside a polygon
let result = glookup.getContainers(point, options)
return result
}
}
Run Code Online (Sandbox Code Playgroud)
将检查 内包含 的getContainers(point)所有给定多边形,然后以 geojson 格式返回对象。Barangays.jsonpoint
然后,如果您想获取描笼涯的名称:
let long = 120.9725526
let lat = 14.5945641
let res = getBarangay(lat, long)
console.log(res.properties.NAME_3)
Run Code Online (Sandbox Code Playgroud)
然而,这个解决方案并不是最优的,因为每次getBarangay()调用函数时都需要加载 Barangay.json,并且截至目前(2020 年)菲律宾有 42,046 个描笼涯。如果有一个 API 可以实现这一点,那就更好了,我们只需发送一个坐标,它就会返回它所属的描笼涯。
| 归档时间: |
|
| 查看次数: |
2464 次 |
| 最近记录: |