确定位置的Barangay

时间:2019-06-11 15:24:05

标签: react-native geojson reverse-geocoding

我有一个项目,需要确定位置(纬度和经度)的barangay(barrio /细分)。有可用的API吗?

在菲律宾,地址中必须包含Barangay。地址的示例格式类似于[House No.][Street][Barangay][City][Region]。 我尝试在Google Maps API和LocationIQ API中进行搜索,但响应中不包含barangay。

1 个答案:

答案 0 :(得分:1)

很遗憾,我没有找到任何提供此数据的Maps API。但是我确实找到了解决方法,方法是获取某个Barangay的多边形,然后检查坐标是否在该多边形内。 geojsonphGeoJson格式提供菲律宾Barangays的所有多边形。我还使用了geojson-geometries-lookup's getContainers()来检查坐标是否在barangay内。

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
  }
}

getContainers(point)将检查Barangays.json中包含point的所有给定多边形,然后以geojson格式返回对象。如果要获取Barangay的名称:

  let long = 121.00436210632324
  let lat = 14.603881611661933
  let res = getBarangay(lat, long)
  console.log(res.properties.NAME_3)

希望这会有所帮助!