Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >查询数据库以查找区域中的位置

我感兴趣的是制作一个网站,它将存储多个位置,并需要能够根据用户的查询找到它们。类似的网站,如Yelp,Zomato,Zillow等。我喜欢的技术栈是PHP/MySQL。

尽管如此,我还有几个相关的问题。给出一个位置的数据库以及它们的纬度/经度坐标.

  1. 他们如何能够查询他们的位置数据库,并返回在X距离特定城市或邮政编码的数据库?
  2. 此外,他们如何才能查询他们的数据库中的位置,而不是在附近,而是在非常特定的城市或州的范围内?他们从哪里得到他们的边界数据,你如何确定一个坐标是否在该边界内的有效方式?
  3. 最后,我注意到一些网站有特定城市的链接在他们的网站上。我本来希望从远程映射API中提取城市数据,但它们经常将图像和其他内容与这些城市联系起来。这些网站是否将所有城市的名称存储在自己的数据库中?他们从哪里得到他们的名单?
EN

回答 2

Stack Overflow用户

发布于 2017-04-04 13:43:56

这将有助于你的第一点。

我使用此查询按起点距离搜索数据库中的属性。起点是经度和纬度,$coordX$coordY。我是通过在Google上进行地理代码查找获得这些信息的:

代码语言:javascript
运行
AI代码解释
复制
SELECT properties.*, 
    (
        (   ACOS(SIN(".$coordX." * PI() / 180) * 
            SIN(coordX * PI() / 180) + COS(".$coordX." * PI() / 180) * 
            COS(coordX * PI() / 180) * COS((".$coordY." - coordY) * 
            PI() / 180)) * 180 / PI()) * 60 * 1.1515
        ) 
    AS distance 
FROM properties 
order by distance

在我的表中,我将单个属性坐标的坐标存储在coordXcoordY列中。

票数 0
EN

Stack Overflow用户

发布于 2017-04-04 13:50:40

这里是MySQL函数,它将取两个纬度/经度对,并给出两个点之间以度为单位的距离。它使用Haversine公式来计算距离。由于地球不是一个完美的球体,在两极和赤道附近有一些误差。

  • 若要转换为英里,请乘以3961。
  • 要转换为公里,乘以6373。
  • 若要转换为米,请乘以6373000。
  • 若要转换为英尺,请乘以(3961 * 5280) 20914080。 划界器$$ 创建函数haversine( lat1浮点数、lon1浮点数、lat2浮点数、lon2浮点数)不返回SQL确定性注释‘返回地球上两个已知纬度点和经度之间的距离。得到英里数,乘以3961,公里乘以6373‘开始返回度(ACOS(辐射(Lat1))*COS(弧形(Lat2))*COS(半径(Lon2)-弧形(Lon1))+SIN(弧形(Lat1))*SIN(弧形(Lat2); 划界者;

使用浮点数(10,6)将列添加到您的纬度和经度地址表中。在保存记录时,编写一个php脚本来查找lat/long。

然后,您可以对表进行选择,以获得具有距离的地址列表。您甚至可以根据距离对结果进行排序,或者将结果限制在来自参考位置的某个半径范围内。

代码语言:javascript
运行
AI代码解释
复制
SELECT 
    `street`,
    `city`,
    `state`,
    `zip`,
    (haversine($ref_location_lat,$ref_location_long,`lat`,`long) * 3961) as `distance`
FROM `address_table`
WHERE (haversine($ref_location_lat,$ref_location_long,`lat`,`long) * 3961) < 300    //  Example for limiting returned records to a raduis of 300 miles.
ORDER BY haversine($ref_location_lat,$ref_location_long,`lat`,`long) DESC;      //  Don't need actual distance for sorting, just relative distance.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43218020

复制
相关文章
java:从RGBA格式的图像数据byte[]创建BufferedImage对象
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/88680596
10km
2019/05/25
1.9K0
Python面向对象编程-类和对象-对象的创建和使用
在Python中,对象是一种数据结构,它封装了数据和行为,并允许对它们进行操作。对象是根据类定义的,它们具有类定义的属性和方法。本文将介绍如何在Python中创建和使用对象。
玖叁叁
2023/04/19
1.2K0
从对象复制到对象创建:用原型模式提升你的编程水平!
所谓浅拷贝,就是对象的成员属性是引用类型时,克隆后的新对象中的成员属性引用的依旧是原对象中成员属性的内存地址。也就是说:成员属性如果是引用类型,克隆的是内存地址;这个内存地址是不变的,指向的是同一个
程序视点
2023/06/06
4220
从对象复制到对象创建:用原型模式提升你的编程水平!
iOS上架之使用appuploader创建构建版本的流程​
1、打开appuploader软件​ 2、登录苹果开发者账号​ 3、点击appuploader右上角的设置​ 4、设置苹果app上传密码​ 5、开始上传ipa的安装包​
iOS程序应用
2023/04/17
4070
iOS上架之使用appuploader创建构建版本的流程​
深度学习应用:iOS 上的图像风格迁移
图像风格迁移,用 python 就可以实现,如果想要在手机上面(不联网)查看效果怎么办呢?
iOSDevLog
2019/02/20
1.1K0
Promise对象的创建与使用
为什么要使用promise? 它指定回调函数的方式更加灵活,当new出一个promise的时候,这个任务就立刻开始执行了,后面的回调函数会在异步执行完后进行回调,在没有promise之前就不一样了:
gzq大数据
2021/06/08
1K0
java 对象的创建与使用
HotSpot 是在 JIT 之后的一款 java 虚拟机的开源实现,sun 从 JDK 1.3.1 开始使用。 它主要使用 C++ 实现的,相对于 JIT,性能有大幅提高。 HotSpot 将部分代码直接编译为本地可执行代码,从而显著提升了性能。
用户3147702
2022/06/27
8880
java 对象的创建与使用
iOS-使用GCD单例创建管理对象
一·单例缓存全局变量 + (instancetype)E { static E *e; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ //开启一个单例 e = [[e alloc] init]; }); return e; } 二·准备工作 在头文件暴露你所需要的属性or方法 @property (nonatomic,strong) NSString *hacker;
Wilbur-L
2021/09/02
5970
.net下灰度模式图像在创建Graphics时出现:无法从带有索引像素格式的图像创建graphics对象 问题的解决方案。
文章主要介绍了如何通过GDI+绘制椭圆,并给出了具体的实现代码和示例。主要步骤包括:定义一个基于GDI+的Bitmap对象,使用GraphicsPath绘制椭圆,将GraphicsPath转换为Bitmap,并使用RenderOptions.SetBitmapScalingMode进行缩放处理。
用户1138785
2018/01/03
5.7K1
.net下灰度模式图像在创建Graphics时出现:无法从带有索引像素格式的图像创建graphics对象 问题的解决方案。
面向对象编程是否走向了消亡?
【CSDN 编者按】作为一种程序设计思想,OOP 在最初诞生之际就收到了广大开发者的喜爱。但是在技术革新日益实践过程中,不少人发现面向对象的设计会使代码复杂化,难以理解而且难以测试,对此,后来有网友更是将 OOP 称之为是反模块化、反并行的,从而开启了一波又一波的吐槽模式。而论 OOP 在各个领域中的应用时,其是否真的有想象中那么糟糕?接下来,本文将带领大家一读 OOP 的兴衰成长史。
Python猫
2019/08/30
7270
面向对象编程是否走向了消亡?
9种日常JavaScript编程中经常使用的对象创建模式
今天这篇文章主要是跟大家分享9种日常JavaScript编程中经常使用的对象创建模式,利用各种技巧可以极大地避免了错误或者可以编写出非常精简的代码。希望对你有所帮助。
前端达人
2021/04/01
6470
【iOS 开发】同步快速判断视频是否可以播放
拿到一个视频的 url 地址(无论是远程还是本地),有时候在播放之前需要检测该视频是否可以播放(本地可能是文件损坏,远端地址情况更复杂),下面介绍两种适用不同情况的方法来实现。
KyXu
2019/04/11
2.2K0
Kotlin | 从线程到协程,你是否还存在 [同步] 上的使用疑问
在2022的今天,对于一个 Android 开发同学,如果你使用 Kotlin 作为主要开发语言,那么协程是必不可缺的 异步框架 。不过对于初学者来说,有时候依然存在一些理解问题或者使用上的不解。毕竟我们用了那么多年的回调与线程,突然转变思想,的确需要过程。
Petterp
2022/03/01
1.4K0
Kotlin | 从线程到协程,你是否还存在 [同步] 上的使用疑问
Javascript创建对象的学习和使用
1 <html> 2 <head> 3 <meta charset="utf-8"> 4 <title>javascript对象的学习</title> 5 </head>
别先生
2017/12/29
1.6K0
Javascript创建对象的学习和使用
对象的创建
new —> 到常量池中检查是否存在一个类的符号引用 —> 如果有,检查这个符号引用代表的类是否已被加载、解析、初始化 —> 没有,则执行类加载过程。
潇洒
2019/07/03
8740
ovirt 上创建vm模板的创建与使用
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/79977816
shaonbean
2019/05/26
2K0
Python面向对象编程(上)
有几种不同的编程范式,面向对象编程(OOP)是Python语言中最流行的编程范式之一。
fanjy
2022/11/16
3980
Python面向对象编程(上)
非分区表是否可以创建分区索引?
有同事问一个问题, 一张非分区表,是否可以创建分区索引? 答案是可以,但分区索引的类型有限制。 MOS这篇文章给出了答案,以及一些例子,What Is The Global Partitioned I
bisal
2019/01/29
1.7K0
三十、是否可以使用 count(*)
一、是否可以使用 count(*) 在 SQL 中,COUNT() 函数返回匹配指定条件的函数。 序号COUNT用法作用描述1COUNT(*)返回总记录数,包含 NULL 值2COUNT(1)与COUNT(*)的作用一样3COUNT(column_name)返回指定列的数目,NULL值不统计4COUNT(DISTINCT column_name)返回指定列不同值的数目,NULL值不统计 Tip: COUNT(*) 与 COUNT(column_name) 的作用不一样,如果列值包含 NULL ,统计结果就
喵叔
2022/05/06
4980
java深拷贝的实现方式_接口可以创建对象吗
Cloneable接口与Serializable接口都是定义接口而没有任何的方法。Cloneable可以实现对象的克隆复制,Serializable主要是对象序列化的接口定义。很多时候我们涉及到对象的复制,我们不可能都去使用setter去实现,这样编写代码的效率太低。JDK提供的Cloneable接口正是为了解决对象复制的问题而存在。Cloneable结合Serializable接口可以实现JVM对象的深度复制。
全栈程序员站长
2022/11/04
1.5K0

相似问题

以编程方式创建ARReferenceImage

20

iOS 11.3.1上PWA中的getUserMedia()

13

是否可以通过编程方式使用iOS在用户的主屏幕上创建快捷图标按钮

27

是否可以通过编程方式创建EMF对象?

10

是否可以通过编程方式通过.xls创建iOS文件?

41
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档