芬兰的Google Maps API和管理区域

时间:2017-01-31 01:47:04

标签: google-maps google-maps-api-3

我正在研究一种为用户输入的地址执行地理编码查找的产品。该代码假定结果应包含administrative_area_level_1,该state转换为stateCode{ "long_name" : "Helsingfors", "short_name" : "Helsingfors", "types" : [ "administrative_area_level_3", "political" ] } (我知道文档指出并非所有国家/地区都使用此代码,但这是代码编写之前的编写方式我。)。我们在使用芬兰地址的生产中遇到了一个问题,我开始在开发者网站上浏览文档,发现了一些有趣的东西。

在此页面上:https://developers.google.com/maps/documentation/geocoding/intro

他们在芬兰列出了一个示例查找: https://maps.googleapis.com/maps/api/geocode/json?components=route:Annegatan|administrative_area:Helsinki|country:Finland

对于该查找,他们列出了包含以下内容的示例回复:

{
  "long_name" : "Helsingfors",
  "short_name" : "H:fors",
  "types" : [ "locality", "political" ]
},

但是,如果你真的加载了这个网址,这就是它对地址的那一部分的说法:

node --debug-brk=18712 --nolazy index.js 
Debugger listening on [::]:18712
/Users/rsiva/Projects/Siva/ntask/ntask-api/index.js:1
(function (exports, require, module, __filename, __dirname) { import express from "express";
                                                              ^^^^^^
SyntaxError: Unexpected token import
    at Object.exports.runInThisContext (vm.js:76:16)
    at Module._compile (module.js:542:28)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Timeout.Module.runMain [as _onTimeout] (module.js:604:10)
    at ontimeout (timers.js:365:14)
    at tryOnTimeout (timers.js:237:5)
    at Timer.listOnTimeout (timers.js:207:5)

这有什么变化吗?

由于

1 个答案:

答案 0 :(得分:0)

如果你的计划是除了地理编码点之外还要绘制第三个管理级别,我想你已经将它们的边界存储在某个地方了。

要处理long_name或short_name中的变体,您需要自己制作一个字典,例如,将“H:fors”翻译为“Helsignfors”。这项工作可能需要一些时间,但它也是迭代的。您需要记录谷歌的出现,描述您在数据库中没有的短名称,然后相应地编辑您的词典。