【问题标题】:MySQL - Store coordinates to avoid duplicatesMySQL - 存储坐标以避免重复
【发布时间】:2016-04-26 19:30:39
【问题描述】:

我正在尝试构建像 Instagram 这样的位置标签...

我根据 Google Api 函数 getBounds() 选择坐标,如下所示:
(注:swlat、swlng、nwlat、nwlng = a、b、c、d)

  SELECT * FROM table WHERE
    (a < c AND lat BETWEEN a AND c) OR (c < a AND lat BETWEEN c AND a)
    AND 
    (b < d AND lng BETWEEN b AND d) OR (d < b AND lng BETWEEN d AND b)

在插入坐标之前,我会检查表中是否存在数据以避免重复。但问题是 Google ApiMapKit 在您搜索特定地点时返回不同的坐标。

现在我正在存储位置的 name 以检查重复项。哪个可行,但也许有更好的方法:)

所以我的问题是

  • 如何存储坐标以避免尽可能少的重复。也许有一个标识符,如“place_id”(在 google API 中),在使用 Google Api 或 MapKit 时,这两种情况都适用
  • 我真的需要存储位置的名称吗,Instagram 是否使用任何 api 来获取有关位置的详细信息?

谢谢:)

【问题讨论】:

    标签: php mysql google-maps mapkit instagram


    【解决方案1】:

    真正的解决方案在于您如何实现自己的数据库 - 任何给定的 lat/lng 坐标只有一个位置。 但是您不能强制 Google 或 MapKit 进行更改。因此,您将始终被这种差异所困扰,并且对可能的文本值 name=like '%placename%' 的搜索将始终是低性能的,并且不能保证像您正确担心的那样准确。 因此,我建议您为 Google 和 MapKit 创建单独的“位置”表,并让用户从 GUI 中过滤它们。 还建议为每个 lat 和 lng 列建立索引。

    【讨论】:

    • 性能方面,存储位置的名称还是使用 api?问题是如果我使用 api,那么你需要将城市和公共场所存储在不同的行中,因为你永远不知道 api 给你什么......注意:我还想考虑假设商店改变位置的情况,然后我认为最好的方法是使用name 检查更改...谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多