Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 地理定位服务的地址表方案_Sql Server_Google Maps_Database Design_Geolocation_Google Geocoder - Fatal编程技术网

Sql server 地理定位服务的地址表方案

Sql server 地理定位服务的地址表方案,sql-server,google-maps,database-design,geolocation,google-geocoder,Sql Server,Google Maps,Database Design,Geolocation,Google Geocoder,我有一个SQL数据库,其中包含存储、用户等表 存储和用户以及其他实体都有一个地址 我正在考虑为所有地址创建一个地址表: Users -------- UserId (PK) AddressId (FK) Name Addresses -------- AddressID (PK) CountryID (FK) -> I have a table Countries with all Countries Street PostalCode Locality Region Latitud

我有一个SQL数据库,其中包含存储、用户等表

存储和用户以及其他实体都有一个地址

我正在考虑为所有地址创建一个地址表:

Users
--------
UserId (PK)
AddressId (FK)
Name

Addresses
--------  
AddressID (PK)
CountryID (FK) -> I have a table Countries with all Countries
Street
PostalCode
Locality
Region
Latitude
Longitude
当用户填写配置文件时,我会有一个输入来输入地址

我想使用谷歌地理编码API将键入的地址转换为其字段,并将其保存到包括纬度和经度在内的数据库中


我有几个问题:

  • 我的地址表方案是否适用于此

  • 我计划使用谷歌地理编码API,那么我应该先存储PlaceId,然后谷歌返回我的数据库吗

  • 我的主要目标是:

  • 将用户输入的地址转换成地址字段并保存到数据库

  • 通过让用户在我的数据库中输入地址类型的纬度和经度,我将能够按位置搜索它们。 示例:在距离伦敦地址20公里的半径范围内获取我的应用程序的用户


  • 你有没有想过把门牌号码分开?一些外部服务或API需要这样做。如果需要,可以更容易地对该字段进行编码

    地理位置有一个地理数据类型: 使用此类型,您可以使用一些地理功能(例如两点之间的距离)执行数据库查询

    我不会直接保存GoogleAPI结果。使用您自己所需的模式


    如果使用地理类型,则可以使用Long/Lat和Distance by radius进行查询。

    因此,建议使用我的模式在数据库中保存地址。创建新地址时,请调用Google API获取纬度和经度,并将这两个值保存为我的数据库中的地理位置。现在我可以使用自己的数据库按位置进行筛选。如果这是你的意思,这也是我的想法,也许我没有解释清楚。当用户在一个输入中键入某个地址时,我将使用谷歌地图自动完成,它将捕捉到例如“英国伦敦牛津街20号”,然后我将从谷歌获得地址字段和该地址的纬度/经度,并将其存储在我自己的模式中。是的,为门牌号设置字段可能是个好主意。我没有添加它,因为它是一个变化很大的字段,所以我不知道是否可以将其规范化。我正在寻找其中一些服务使用的模式以及ISO模式(如果有的话)。您走的路是对的。我只需要更改模式:经纬度->位置地理