知识点
相关文章
更多最近更新
更多PHP版根据经纬度和半径计算出经纬度的范围
2019-03-27 01:03|来源: 网路
百度地图提供了范围搜索的功能,但是它使用的是百度自己的数据,但是有时候我们需要使用自己的数据,显示在地图上。比如给定两个参数:指定位置(某一处的经纬度lnglat)和搜索半径(r),搜索指定范围内的数据。针对这样的需求,基本有三种方法可以解决:
1:根据map提供的计算两个坐标之间距离的方法,逐一计算指定位置和我们DB库中的位置的距离s,用s和r进行比较,如果s<r,则在搜索范围内,返给前段标注在地图上。这种方法如果数据量小,可以尝试,如果数据量大,没测试过,但可以想象……
2:使用搜索引擎自带的功能,比如solr的位置感知搜索,可参看文章http://www.ibm.com/developerworks/cn/java/j-spatial/
3:如果对精度要求不是很高,可以根据指定位置的经纬度和半径计算出经纬度的范围,然后判断DB中的经纬度是否在此范围内,可用SQL进行查询。下面是此计算方法:
/** * @param lat 纬度 lon 经度 raidus 单位米 * return minLat,minLng,maxLat,maxLng */ public function getAround($lat,$lon,$raidus){ $PI = 3.14159265; $latitude = $lat; $longitude = $lon; $degree = (24901*1609)/360.0; $raidusMile = $raidus; $dpmLat = 1/$degree; $radiusLat = $dpmLat*$raidusMile; $minLat = $latitude – $radiusLat; $maxLat = $latitude + $radiusLat; $mpdLng = $degree*cos($latitude * ($PI/180)); $dpmLng = 1 / $mpdLng; $radiusLng = $dpmLng*$raidusMile; $minLng = $longitude – $radiusLng; $maxLng = $longitude + $radiusLng; echo $minLat.”#”.$maxLat.”@”.$minLng.”#”.$maxLng; }
转自:http://www.cnblogs.com/tyjsjl/p/3799465
相关问答
更多-
惠阳区秋长维布村经纬度[2024-03-28]
北纬N22°49′19.17″ 东经E114°24′54.54″ 靠近:惠州市秋长镇维布村 参考:广东省惠州市惠阳区秋长街道维布村东南方向 -
我用java在后端集成了redis作为缓存,mysql数据库记录了经纬度的信息,[2022-04-04]
经纬度信息一般不怎么变化,可以先放到redis中去建立索引,后面app端直接查询缓存就可以了,比较快! -
MaxMind Geolite城市是免费的 。 如果它不够好,你显然可以升级到更准确的付费版本。 我不能说付费版本的质量,因为我从来没有使用它。 如果你喜欢你的SQL,请下载CSV版本 。 将其加载到您选择的数据库中,然后查询。 更快速和节省空间的选择是下载相同数据库的文件二进制blob版本 ,然后使用C#类来查询它。 另外,我发现ipinfodb.com是有用的。 查询是通过简单的HTTP GET。 例如,要geolocate stackoverflow.com尝试: http://ipinfodb.co ...
-
您可以使用Google GeoCoding服务将地址转换为一组坐标。 例如,您可以致电地址: http://maps.googleapis.com/maps/api/geocode/xml?address=Hafeez+center,Lahore,Punjab,Pakistan&sensor=false 我的建议是做类似的事情: var responseDocument = XDocument.Load("http://maps.googleapis.com/maps/api/geocode/xml?add ...
-
来自经纬度的热图(Heat map from latitude & longitude)[2023-03-20]
有一个名为heatmap.js的开源库可能适合你。 它基于HTML5,因此不适用于旧版浏览器。 他们也有一个GMaps热图覆盖 ,所以它是相当即插即用的。 There's an open source library called heatmap.js which might work for you. It's HTML5 based so won't work in older browsers though. They also have a GMaps Heatmap Overlay, so it' ... -
如何获得经纬度?(How to get latitude and longitude?)[2022-02-28]
我认为您正在寻找的是全球定位系统,通常也称为GPS。 一些好的品牌设备是Garmin和TomTom。 如果您想通过Android手机或iOS设备使用涉及GSM,Wi-Fi,手机信号塔等的策略来查找您的位置。以下是一些链接: Android位置策略: http : //developer.android.com/guide/topics/location/strategies.html iOS核心位置: http : //www.iosdevnotes.com/2011/10/ios-corelocation ... -
为你的情况尝试使用WHERE而不是HAVING SELECT *, (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos( radians(long) - radians('".$lng."')) + sin(radians('".$lat."')) * sin(radians(lat)))) AS distance FROM carpark WHERE distance < 15 ORDER BY distance LIMIT ...
-
尝试下面的一个:CLLocationManager是您必须使用的接口,以获取有关设备位置的信息。 您可以随时初始化并开始获取位置更新。 只要收到新位置,CLLocationManager就会通知您的代理人。 locationManager = [[CLLocationManager alloc] init]; locationManager.desiredAccuracy = kCLLocationAccuracyBest; locationManager.distanceFilter = DISTANCE_FILTE ...如果您需要给定地址的纬度和经度,可以使用google maps api https://developers.google.com/maps/documentation/javascript/ 以下是一个示例: https : //google-developers.appspot.com/maps/documentation/javascript/examples/geocoding-simple 编辑:在警告弹出窗口中显示它: var address = document.getElementById( ...