标签: geolocation

为什么要使用SQL Server 2008地理数据类型?

我正在重新设计一个客户数据库,我想要存储的一条新信息以及标准地址字段(街道,城市等)是地址的地理位置.我想到的唯一用例是允许用户在无法找到地址时映射Google地图上的坐标,这通常发生在该地区是新开发的,或者位于偏远/乡村地区.

我的第一个倾向是将纬度和经度存储为十进制值,但后来我记得SQL Server 2008 R2有一个geography数据类型.我绝对没有使用过的经验geography,从我最初的研究来看,它看起来对我的场景来说太过分了.

例如,要使用存储为的纬度和经度decimal(7,4),我可以这样做:

insert into Geotest(Latitude, Longitude) values (47.6475, -122.1393)
select Latitude, Longitude from Geotest
Run Code Online (Sandbox Code Playgroud)

但是geography,我会这样做:

insert into Geotest(Geolocation) values (geography::Point(47.6475, -122.1393, 4326))
select Geolocation.Lat, Geolocation.Long from Geotest
Run Code Online (Sandbox Code Playgroud)

虽然它不是那么复杂,但如果我不需要增加复杂性呢?

在我放弃使用的想法之前geography,有什么我应该考虑的吗?使用空间索引搜索位置与使用纬度和经度字段编制索引会更快吗?使用geography我有什么优势我不知道?或者,另一方面,我应该知道哪些会阻止我使用geography


更新

@Erik Philips提出了进行近距离搜索的能力geography,非常酷.

另一方面,快速测试显示,使用select时获得经纬度的简单程度明显较慢geography(详情如下).并且对另一个SO问题的接受答案的评论geography让我很谨慎:

@SaphuA欢迎你.作为旁注,请非常小心在可空的GEOGRAPHY数据类型列上使用空间索引.存在一些严重的性能问题,因此即使您必须重新构建模式,也要使GEOGRAPHY列不可为空. - 托马斯6月18日11:18

总而言之,权衡接近搜索的可能性与性能和复杂性之间的权衡,我决定放弃geography在这种情况下的使用.


我跑的测试细节:

我创建了两个表,一个使用geography,另一个使用decimal(9,6)纬度和经度:

CREATE TABLE [dbo].[GeographyTest]
(
    [RowId] …
Run Code Online (Sandbox Code Playgroud)

geocoding geolocation sql-server-2008

104
推荐指数
2
解决办法
7万
查看次数

Google如何计算我在桌面上的位置?

这对我来说很困惑,我不确定你是否有人注意到或使用你的桌面谷歌地图上的"我的位置"功能(或没有GPS /无移动设备).如果你有一个带谷歌齿轮的浏览器(最容易使用的是谷歌浏览器),那么你在谷歌地图的缩放功能上方会有一个蓝色圆圈,点击(不登录我的谷歌帐户)使用标准Wi Fi到我自己的个人路由器和我的ISP的正常互联网连接,它以某种方式设法精确定位我的确切位置(在这个时刻).

它是如何做到的?他们在这里简单地提到它,但它没有完全解释它,它说我的浏览器知道我在哪里...

......我很困惑,怎么样?

我很感兴趣,因为我很乐意将它集成到我的编程项目的未来,就像一些背景理解一样,目前似乎没有太多记录.

google-gears geolocation google-latitude

103
推荐指数
4
解决办法
12万
查看次数

android webview地理定位

我必须在a中检索用户的位置WebView.我使用以下Javascript执行此操作:

function getLocation() {
   navigator.geolocation.getCurrentPosition(displayLocation, handleError);
}
Run Code Online (Sandbox Code Playgroud)

但是权限请求弹出窗口永远不会打开.

我设置了这些设置:

ws.setJavaScriptEnabled(true);
ws.setGeolocationEnabled(true);
ws.setJavaScriptCanOpenWindowsAutomatically(true);
Run Code Online (Sandbox Code Playgroud)

从一个位置访问用户位置的正确方法是WebView什么?

android geolocation

97
推荐指数
6
解决办法
7万
查看次数

我应该准确存储纬度和经度吗?

我在这里读到这个问题:

在SQL数据库中存储纬度和经度数据时要使用的数据类型是什么?

似乎普遍的共识是使用Decimal(9,6)是要走的路.对我来说,问题是,我真的需要这么准确吗?

例如,Google的API会返回如下结果:

"lat": 37.4219720,
"lng": -122.0841430
Run Code Online (Sandbox Code Playgroud)

超出-122.0841430,我需要多少位数?我已经阅读了几本指南,但我无法从中得到足够的理解来解决这个问题.

更确切地说,在我的问题中:如果我想在精确位置50英尺范围内准确,我需要存储多少小数点?

也许一个更好的问题实际上是一个非编程问题,但它会是:每个小数点给你多少准确?

这很简单吗?

  1. 项目清单
  2. x00 = 6000英里
  3. xx0 = 600英里
  4. xxx = 60英里
  5. xxx.x = 6英里
  6. xxx.xx = .6英里
  7. 等等?

mysql geolocation

93
推荐指数
5
解决办法
6万
查看次数

使用PHP获取IP地址

理想情况下,我正在尝试将可以从任何Web浏览器查询的PHP脚本放在一起,并返回访问PHP脚本的IP地址的国家/地区.

这可能还是有更好的解决方案?

php ip-address geolocation geoip ip-geolocation

91
推荐指数
8
解决办法
20万
查看次数

位置管理器错误:(KCLErrorDomain错误0)

Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
Run Code Online (Sandbox Code Playgroud)

为什么会出现此错误?

iphone geolocation

90
推荐指数
5
解决办法
7万
查看次数

J2ME/Android/BlackBerry - 行车路线,两个地点之间的路线

在Android 1.0上有一个com.google.googlenav命名空间用于行车路线:
路线 - 改进了Google行车路线
但是在较新的SDK中,它被某些原因删除了......
Android:自API 1.0以来删除了DrivingDirections - 如何在1.5 /中执行1.6? 在黑莓手机上也缺少这样的API:
如何找到Blackberry中两个地方之间的路线?

CSIE-TW给出了一个解决方法(对于KML文件查询gmaps并解析它):
Android的-驾驶方向(路由路径)
安德烈取得了DrivingDirections辅助类为Android.
我在j2me中为这个功能写了一个小助手,所以我想在Android和BlackBerry上分享我的样本.

更新
正如评论中所述,Google Maps API服务条款并未正式允许:

Google地图/ Google地球API服务条款
上次更新时间:2009年5月27日
...
10.许可限制.除非条款明确允许,或者除非您事先获得Google(或适用的特定内容提供商)的书面授权,否则Google的上述许可均受您遵守以下所有限制的约束.除非第7节或Maps API文档中明确允许,否则您不得(也不允许任何其他人):
...
10.9将服务或内容与任何产品,系统或应用程序一起使用或与之相关:
(a)实时导航或路线引导,包括但不限于与用户的传感器使能设备的位置同步的逐向路线引导;

并且可能对某些应用程序禁用(不知何故,至少在Android上)...来自.NET会话中的Geocode抓取:

API使用条款不允许这样做.您不应该刮掉谷歌地图来生成地理编码.我们将阻止对我们的服务器进行自动查询的服务.

Bret Taylor
Google地图产品经理

将不胜感激任何替代和/或建议!
谢谢!

android blackberry geolocation java-me driving-directions

90
推荐指数
1
解决办法
10万
查看次数

在不使用GPS或互联网的情况下获取Android用户的当前位置

是否可以在不使用GPS或互联网的情况下获取用户的当前位置?我的意思是在移动网络提供商的帮助下.

gps android geolocation android-gps

89
推荐指数
3
解决办法
14万
查看次数

谷歌地图api的替代品

Google maps API非常适合开发基于位置的移动电话服务.但出于某种原因,在特殊项目中使用它仅限于我.

例如,如果您的项目与谷歌的一般条款和条件相冲突,则不建议使用谷歌地图API.

在我的应用程序中,Android和iOS,我想通过检索GPS信息在地图上显示位置.总的来说,API应该提供类似谷歌地图API 的操作范围.

您知道哪些替代品?也许有开源API?还有其他建议吗?

iphone android google-maps geolocation google-maps-api-3

84
推荐指数
6
解决办法
3万
查看次数

如何使用地理位置获取访问者的位置(即国家/地区)?

我正在尝试扩展原生地理定位功能

if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;
    });
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以使用访问者的国家名称(也许返回信息数组).

到目前为止,我所能找到的只是显示谷歌地图界面的功能,但实际上没有给出我想要的东西,除了这个在这个例子中效果很好的图书馆,但由于某种原因在我的电脑上无效.我不确定那里为什么会出错.

无论如何,你知道如何从纬度和经度值返回一个包含国家,城市等信息的数组吗?

javascript geolocation

83
推荐指数
9
解决办法
17万
查看次数