代码之家  ›  专栏  ›  技术社区  ›  Teja Nandamuri

如何提高google地理代码api查询的准确性?

  •  0
  • Teja Nandamuri  · 技术社区  · 6 年前

    我正在开发一个活动计划应用程序,需要验证用户输入的地址。

    目前,我并不担心进入错误的门/单位号码或输入不存在的单位号码。

    我只想处理用户输入诸如Boardroom/Meeting room/etc之类的通用单词作为位置的情况。

    问题是geocode api没有提供任何提高准确性的功能。

    以下api:

    https://maps.googleapis.com/maps/api/geocode/json?address=no+location&key=AIz *****bxyiI公司

    地址键入为“无位置”

    但是这个查询给出了结果

    {
    "results": [
        {
            "address_components": [
                {
                    "long_name": "2120",
                    "short_name": "2120",
                    "types": [
                        "street_number"
                    ]
                },
                {
                    "long_name": "Main Street",
                    "short_name": "Main St",
                    "types": [
                        "route"
                    ]
                },
                {
                    "long_name": "Parsons",
                    "short_name": "Parsons",
                    "types": [
                        "locality",
                        "political"
                    ]
                },
                {
                    "long_name": "Labette County",
                    "short_name": "Labette County",
                    "types": [
                        "administrative_area_level_2",
                        "political"
                    ]
                },
                {
                    "long_name": "Kansas",
                    "short_name": "KS",
                    "types": [
                        "administrative_area_level_1",
                        "political"
                    ]
                },
                {
                    "long_name": "United States",
                    "short_name": "US",
                    "types": [
                        "country",
                        "political"
                    ]
                },
                {
                    "long_name": "67357",
                    "short_name": "67357",
                    "types": [
                        "postal_code"
                    ]
                }
            ],
            "formatted_address": "2120 Main St, Parsons, KS 67357, USA",
            "geometry": {
                "location": {
                    "lat": 37.340256,
                    "lng": -95.268513
                },
                "location_type": "ROOFTOP",
                "viewport": {
                    "northeast": {
                        "lat": 37.3416049802915,
                        "lng": -95.26716401970849
                    },
                    "southwest": {
                        "lat": 37.3389070197085,
                        "lng": -95.26986198029151
                    }
                }
            },
            "place_id": "ChIJXQvh_YcauIcRg5p7FuD3Luc",
            "plus_code": {
                "compound_code": "8PRJ+4H Parsons, Kansas, United States",
                "global_code": "86968PRJ+4H"
            },
            "types": [
                "establishment",
                "point_of_interest",
                "store"
            ]
        }
    ],
    "status": "OK"
    

    }

    我尝试了以下方法:

    1)在这些情况下取决于用户输入。如果输入的地址不是有效的地址,则用户可以将该事件标记为常规事件,而无需在映射视图上映射该事件。

    2)设置一种格式,地址字段至少应包含单元号和街道号。因此,如果地址上没有数字,则它不是有效位置。即使在这种情况下,魔兽世界大街1212号也会产生意想不到的结果。

    问题1)在这些情况下,是否有一个通用规则可遵循?比如何时提醒用户输入的位置无效?

    Q2)有没有改进地理代码查询的方法?

    来自谷歌文档:

    地址您要对其进行地理编码的街道地址,格式为 由有关国家的国家邮政局使用。 其他地址元素,如业务名称和单位、套件或 应避免楼层编号。

    他们说明了如何查询一个有效的地址,但没有提到准确性或地址验证。

    我找不到其他方法来处理这种情况。

    1 回复  |  直到 5 年前
        1
  •  1
  •   xomena    6 年前

    Google地理编码服务显然不是地址验证服务。地理编码是将地址转换为地理坐标的过程,您可以使用地理坐标来放置标记或定位地图。

    • 不能保证有效的邮政地址会产生任何结果。
    • 不能保证无效的邮政地址会被更正。
    • 不能保证一个不存在的邮政地址将返回完全零的结果。

    如果你对地址格式的验证感兴趣,你应该研究不同的选项。比如说 SmartyStreets API .

    我希望这有帮助!