latitude

根据经纬度查询附近商家及排序

Deadly 提交于 2020-01-31 10:38:24
最近在做的项目中有一个业务需求是通过手机端传来的经纬度查询附近商家并根据各种条件排序,项目用的是mybatis,数据库是mysql,在此记录下. SELECT h.hotel_id hotelId, hotel_name hotelName, ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( #{lat} * PI() / 180 - latitude * PI() / 180 ) / 2 ), 2 ) + COS(#{lat} * PI() / 180) * COS(latitude * PI() / 180) * POW( SIN( ( #{lon} * PI() / 180 - longitude * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS distance FROM hotel h ORDER BY distance 其中 latitude和 longitude分别是数据库中对象的一个属性,lat和long则是手机端传来的经纬度,计算出的数值单位是米. 当然还要考虑分页及其他因素,以及可以用函数调用,这里只记录下距离算法. 来源: https://www.cnblogs.com/legoo/p/8214215.html

墨卡托(Mercator)投影

别来无恙 提交于 2020-01-24 00:35:16
墨卡托(Mercator)投影 Google Maps、Virtual Earth等网络地理所使用的地图投影,常被称作Web Mercator或Spherical Mercator,它与常规墨卡托投影的主要区别就是把地球模拟为球体而非椭球体。 1 什么是墨卡托投影? 墨卡托(Mercator)投影,又名”等角正轴圆柱投影”,荷兰地图学家墨卡托(Mercator)在1569年拟定,假设地球被围在一个中空的圆柱 里,其赤道与圆柱相接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是一幅标准纬线为零度(即赤道)的”墨卡托投 影”绘制出的世界地图。 2 Google们为什么选择墨卡托投影? 墨卡托投影的”等角”特性,保证了对象的形状的不变行,正方形的物体投影后不会变为长方形。”等角”也保证了方向和相互位置的正确性,因此在航海和航空中常常应用,而Google们在计算人们查询地物的方向时不会出错。 墨卡托投影的”圆柱”特性,保证了南北(纬线)和东西(经线)都是平行直线,并且相互垂直。而且经线间隔是相同的,纬线间隔从标准纬线(此处是赤道,也可能是其他纬线)向两级逐渐增大。 但是,”等角”不可避免的带来的面积的巨大变形,特别是两极地区,明显的如格陵兰岛比实际面积扩大了N倍。 为什么是圆形球体,而非椭球体? 这说来简单,仅仅是由于实现的方便,和计算上的简单

墨卡托投影、地理坐标系、地面分辨率、地图比例尺

北城以北 提交于 2020-01-24 00:24:50
GIS 理论(墨卡托投影、地理坐标系、地面分辨率、地图比例尺、 Bing Maps Tile System)   墨卡托投影(Mercator Projection),又名“等角正轴圆柱投影”,荷兰地图学家墨卡托(Mercator)在1569年拟定,假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地 球中心有一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是一幅标准纬线为零度(即赤道)的“墨卡托投影”绘制出的世界地图。 一、墨卡托投影坐标系( Mercator Projection )   墨卡托投影以整个世界范围,赤道作为标准纬线,本初子午线作为中央经线,两者交点为坐标原点,向东向北为正,向西向南为负。南北极在地图的正下、上方,而东西方向处于地图的正右、左。   由于Mercator Projection在两极附近是趋于无限值得,因此它并没完整展现了整个世界,地图上最高纬度是85.05度。为了简化计算,我们采用球形映射,而不是椭球体形状。虽然采用Mercator Projection只是为了方便展示地图,需要知道的是,这种映射会给Y轴方向带来0.33%的误差。 ---------------------------------------------------------------------------------------------------

小程序获取当前位置所在的城市

▼魔方 西西 提交于 2020-01-16 14:55:01
1、话不多说,直接上干货 先来张目录结构 ① index.wxml <view class="retailStore"> <view class="cnaps borderBottom"> <text>所在城市:</text> <text class='m-bbt'>{{province}} {{city}}</text> </view> </view> ②index.js 插入提示: 申请开发者密钥(key):申请密钥 下载微信小程序JavaScriptSDK,微信小程序JavaScriptSDK v1.0 下载完成后放入utils文件夹下引用即可 安全域名设置,在“设置” -> “开发设置”中设置request合法域名,添加https://apis.map.qq.com 测试用的话可以在微信开发工具中选择详情,如下图 //index.js //获取应用实例 const app = getApp(); var QQMapWX = require('../../utils/qqmap-wx-jssdk.min.js'); var qqmapsdk; Page({ data: { province: '', city: '', latitude: '', longitude: '' }, onLoad: function () { qqmapsdk = new QQMapWX({

iphone定位 基本知识

青春壹個敷衍的年華 提交于 2020-01-16 12:26:23
找到一个关于iphone定位的的资料,收藏一下 其实使用iphone的定位系统开发软件是很简单的一件事,下面我们就来认识一下iphone的定位系统的使用。 1.Getting the User’s Current Location 获取用户当前位置。 获取位置的方式有三种:GPS, cell tower triangulation(蜂窝站点), 和 Wi-Fi Positioning Service (WPS).其中GPS是最精确的定位方式,但是在第一代iphone上没有。GPS是通过读取很多卫星微波信号来确定当前位置的。蜂窝站点通过 iphone周围的站点计算出来的,在蜂窝站点密集的地方使用这种技术可以达到一个准确的值,比如在城市但在蜂窝站点不密集的地方效果就没那么好了。最后一个WPS使用的是连接到Wi-Fi网络的IP地址来确定位置,这将会有较大的误差。这三种方式都会消耗大量的电。怎么才能即实现定位功能又省电呢?下面的方法就可以解决:当使用Core Location时,可以选择精确度,谨慎的选择你所需要的准确度,可以帮助你省很多电。Core Location使用的技术隐藏在应用程序中。我们无需选择使用GPS、蜂窝站点技术还是WPS,我们只要告诉它我们需要的准确度它会自己决定选什么技术来满足我们的需求。 2.The Location Manager Core

python读取文件夹下面的所有csv文件,并根据文件里面的经纬度给csv文件新增一列geohash码

邮差的信 提交于 2020-01-12 13:44:35
python读取文件夹下面的所有csv文件,并对文件里面的经纬度进行geohash编码后作为新增列保存到csv文件里面 代码如下:( 注:这段代码处理csv文件里面只有两列没有列名的数据,分别是经度和纬度 ) import geohash as gh import os import pandas as pd for info in os . listdir ( "E:\geohashData\jwdt1" ) : #文件夹的路径 domain = os . path . abspath ( r "E:\geohashData\jwdt1" ) #获取文件夹的路径 info = os . path . join ( domain , info ) #将路径与文件名结合起来就是每个文件的完整路径 data = pd . read_csv ( info , header = None , names = [ 'longitude' , 'latitude' ] ) #读数据并为这两列数据新增列名 #data1=pd.DataFrame(data,columns=['latitude','longitude']) data_list = [ ] latitude = data [ "latitude" ] longitude = data [ "longitude" ] for i in

Pyecharts绘制全球流向图

你。 提交于 2020-01-07 19:08:23
安装 pip(3) install pyecharts 此文版本为v1.6 此文版本为v1.6 此文版本为v1.6 效果图 使用Pycharts绘制一个如上图类似的全球流向图。 pyecharts里的地理图标总共有三种— Geo:地理坐标系,Map:地图,Bmap:百度地图。 Map地图可以绘制全球地图,但不能绘制带有流向的效果图,所以此处需要使用Geo地理坐标系图。 Geo图的类型有scatter(散点图),effectScatter(涟漪散点图),heatmap(热力图),lines(流向图)。 散点图不用说,就是正常的散点图。涟漪散点图类似带有波纹的散点图,像水的涟漪效果一样。 效果如下: 热力图也不用说,就是正常的热力图效果。 我们需要绘制的是流向图。 # 导入Geo包,注意1.x版本的导入跟0.x版本的导入差别 from pyecharts.charts import Geo # 导入配置项 from pyecharts import options as opts # ChartType:图标类型,SymbolType:标记点类型 from pyecharts .globals import ChartType, SymbolType geo = Geo() # 地图类型,世界地图可换为world geo.add_schema(maptype="china") #

判断地图某一点在不在范围内

徘徊边缘 提交于 2020-01-07 16:00:04
1 /** 2 * 判断当前的坐标咋不在圆范围内 3 * @param longitude 当前经度 4 * @param latitude 当前纬度 5 * @return boolean 6 * true:在 7 * false:不在 8 */ 9 public boolean isInPolygon(double longitude, double latitude) { 10 double R = 6378137.0; 11 12 double dLat = (纬度- latitude) * Math.PI / 180; 13 double dLng = (经度- longitude) * Math.PI / 180; 14 15 double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(latitude * Math.PI / 180) * Math.cos(纬度* Math.PI / 180) * Math.sin(dLng / 2) * Math.sin(dLng / 2); 16 double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); 17 double d = R * c; 18 double dis = Math.round(d);

使用Javascript从Google Places搜索api获取纬度和经度

删除回忆录丶 提交于 2020-01-06 03:42:29
如何使用谷歌地图搜索框api从搜索到的位置获取经度和纬度. 我使用与谷歌演示相同的代码 – https://developers.google.com/maps/documentation/javascript/examples/places-searchbox 搜索代码: <script type="text/javascript"> //自动搜索 function initMap() { var input = document.getElementById('address_search'); var places = new google.maps.places.Autocomplete(input); google.maps.event.addListener(places, 'place_changed', function () { var place = places.getPlace(); var address = place.formatted_address; var latitude = place.geometry.location.A; var longitude = place.geometry.location.F; var mesg = "Address: " + address; mesg += "nLatitude: " + latitude

react-native-baidu-map的使用(android端)

送分小仙女□ 提交于 2020-01-02 18:31:04
第一步:先到百度地图申请AK (1)首先要注册百度账号,已注册的请忽略 (2)申请成为百度地图的开发者 ,网址: http://lbsyun.baidu.com/apiconsole/key/create 2.1、获取开发版SHA1: 前提需要安装Android Studio,安装后打开选择Create a new project,随便选择一个模板新建一个项目,它会自动构建Android Sdk,构建完成后,会在电脑的如下目录下生成一个debug.keystore文件, 进入上图目录中,执行 keytool -v -list -keystore debug.keystore,口令是:android,如下图,SHA1就是开发版的SHA1 2.2、获取发布版SHA1 用android studio打开2.1步骤中新建的项目,选中项目,点击build 选择APK后,选择create new 这些都是随便写的,我为了方便,key Store Path和上面的debug.keystore放在同一个目录下, 在.android目录下,执行命令 keytool -v -list -keystore release.jks,口令就是刚才生成apk时候,你自己输入的那个。 2.3 包名 在react-native项目下, 至此,所有步骤都完成了,点击提交,就生成自己的AK了。 第二步,写代码 1