我已经测试了一段时间的地理位置查询,到目前为止,我还没有发现任何问题。
我试图搜索给定半径内的所有城市,通常是使用城市坐标搜索城市周围的城市,但是最近我尝试在城市周围搜索,发现该城市本身未归还。
我在数据库中摘录了以下城市:
city latitude longitude
Saint-Mathieu 45.316708 -73.516253
Saint-脡douard 45.233374 -73.516254
Saint-Michel 45.233374 -73.566256
Saint-R茅mi 45.266708 -73.616257
但是,当我在Saint-R茅米市内运行查询时,出现以下查询…
SELECT tblcity.city, tblcity.latitude, tblcity.longitude,
truncate((degrees(acos( sin(radians(tblcity.latitude))
* sin(radians(45.266708))
+ cos(radians(tblcity.latitude))
* cos(radians(45.266708))
* cos(radians(tblcity.longitude - -73.616257) ) ) )
* 69.09*1.6),1) as distance
FROM tblcity HAVING distance < 10 ORDER BY distance desc
我得到这些结果:
city latitude longitude distance
Saint-Mathieu 45.316708 -73.516253 9.5
Saint-脡douard 45.233374 -73.516254 8.6
Saint-Michel 45.233374 -73.566256 5.3
搜索中缺少圣鲁茅米镇。
所以我尝试了一个修改后的查询,希望得到更好的结果:
SELECT tblcity.city, tblcity.latitude, tblcity.longitude,
truncate(( 6371 * acos( cos( radians( 45.266708 ) )
* cos( radians( tblcity.latitude ) )
* cos( radians( tblcity.longitude )
- radians( -73.616257 ) )
+ sin( radians( 45.266708 ) )
* sin( radians( tblcity.latitude ) ) ) ),1) AS distance
FROM tblcity HAVING distance < 10 ORDER BY distance desc
但我得到了相同的结果…
但是,如果我通过将经纬度的最后一位或长整数更改为1来稍微修改Saint-R茅mi的坐标,则两个查询都将返回Saint-
R茅mi。另外,如果我将查询集中在上述任何其他城市上,则搜索到的城市也会返回到结果中。
任何人都可以弄清是什么原因导致我的上述查询无法显示所搜索的圣鲁茅米市?我在下面添加了表格示例(已删除多余的字段)。
我使用的是MySQL 5.0.45,请先感谢。
CREATE TABLE `tblcity` (
`IDCity` int(1) NOT NULL auto_increment,
`City` varchar(155) NOT NULL default '',
`Latitude` decimal(9,6) NOT NULL default '0.000000',
`Longitude` decimal(9,6) NOT NULL default '0.000000',
PRIMARY KEY (`IDCity`)
) ENGINE=MyISAM AUTO_INCREMENT=52743 DEFAULT CHARSET=latin1 AUTO_INCREMENT=52743;
INSERT INTO `tblcity` (`city`, `latitude`, `longitude`) VALUES
('Saint-Mathieu', 45.316708, -73.516253),
('Saint-脡douard', 45.233374, -73.516254),
('Saint-Michel', 45.233374, -73.566256),
('Saint-R茅mi', 45.266708, -73.616257);
在您的第一个查询中,我相信您已经颠倒了减法中的经度。余弦的球形定律是:
d = acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(long2鈭抣ong1))*R
如果将lat1替换为tblcity.latitude,则必须将long1替换为tblcity.longitude。我认为您不小心在查询中替换了long2。这个更好吗?
SELECT tblcity.city, tblcity.latitude, tblcity.longitude,
truncate((degrees(acos( sin(radians(tblcity.latitude))
* sin(radians(45.266708))
+ cos(radians(tblcity.latitude))
* cos(radians(45.266708))
* cos(radians(-73.616257 - tblcity.longitude) ) ) )
* 69.09*1.6),1) as distance
FROM tblcity HAVING distance < 10 ORDER BY distance desc
我尚未调查您的第二个查询,但希望能对您有所帮助。
本文向大家介绍如何使用HTML5地理位置查找位置?,包括了如何使用HTML5地理位置查找位置?的使用技巧和注意事项,需要的朋友参考一下 HTML5 Geolocation API使您可以与自己喜欢的网站共享位置。JavaScript可以捕获您的纬度和经度,并且可以发送到后端Web服务器,并进行精美的位置感知操作,例如查找本地商家或在映射上显示您的位置。 地理位置API使用全局导航器对象的新属性,即
我使用的是Windows 7 64位计算机,目标SDK版本是23。
我最近创建了一个新的本地repo,并从我们的远程存储库中提取了一些代码。 当我打开项目时,我在控制台中收到一条消息: 我按照这里的说明设置环境变量(Im in a Mac),并检查了我的local.properties: 所以,这两件事都解决了,我仍然得到这个错误。我已经搜索过了,但是没有一个解决方案对我有效。 有什么帮助吗?非常感谢。 编辑: 这只发生在一个项目中。其余的项目运行良好。
这是我的nginx配置文件。 默认情况下。conf,第一个位置用于访问/usr/share/nginx/html目录,当我访问http://47.91.152.99.但是,当我为目录/usr/share/nginx/public directory添加一个新位置时,nginx会在我访问时返回404页http://47.91.152.99/test. 那么,到底是怎么回事呢?我误用nginx的指令吗
使用微信内置地图查看位置接口 wx.openLocation({ latitude: 0, // 纬度,浮点数,范围为90 ~ -90 longitude: 0, // 经度,浮点数,范围为180 ~ -180。 name: '', // 位置名 address: '', // 地址详情说明 scale: 1, // 地图缩放级别,整形值,范围从1~28。默认为最大 inf
我正在尝试将我的android项目从Eclipse迁移到MAC中的android Studio v1.0.1 如果我创建一个新项目,一切正常,但如果我从Eclipse导入一个项目,则会出现以下错误: 错误:配置项目“MyProject”时出现问题。未找到SDK位置。使用sdk定义位置。本地目录。属性文件或使用ANDROID_HOME环境变量。 我的local.properties文件已经有了SDK