Определить барангайскую локацию - PullRequest
0 голосов
/ 11 июня 2019

У меня есть проект, который требует определения barangay (barrio / subdivision) местоположения (широта и долгота). Есть ли API, который я могу использовать?

На Филиппинах адрес должен включать барангая. Пример формата адреса будет выглядеть как [House No.][Street][Barangay][City][Region]. Я пытался выполнить поиск в API Карт Google и API LocationIQ, но ответы не включают барангайс.

1 Ответ

1 голос
/ 18 июня 2019

К сожалению, я не нашел ни одного API Карт, предоставляющего эти данные.Но я нашел обходной путь для этого, получив многоугольник определенного барангая и проверив, находятся ли координаты внутри этого многоугольника. geojsonph предоставляет все полигоны барангов на Филиппинах в формате GeoJson .Я также использовал geojson-geometry-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, затем возвращает объект в формате геойсон.Если вы хотите получить имя барангая:

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

Надеюсь, это поможет!

...