2012-10-10 45 views
0

我目前正在开发一个iPhone的移动应用程序,它包含一个部分,需要确定用户当前的位置和最近的位置(存储在手机中的纬度,长点) 。我有以下问题:在iPhone中确定用户当前的位置和最近的位置

1-用户是否需要连接到互联网,以便他/她的位置可以由我们的应用程序确定? GPS的设计不足以确定用户当前位置为经纬度吗?

2-因为我们将一些位置保存在应用程序中,可以在没有互联网连接的情况下从用户当前位置确定最近的位置(例如5公里内)吗?

如果可以提供代码示例来缩小上述答案的范围,那将非常感谢。

非常感谢

+1

我猜GPS需要通过互联网连接发送和接收数据。如果您有本地存储的数据(坐标),则可以离线计算离线的离线。 – keyser

+1

你想在Android或iPhone – 2012-10-10 11:19:11

+0

由于用户的手机在他的手机中有一个GPS设备,为什么应用程序需要连接到互联网,因为GPS应该默认情况下以离线模式确定用户当前位置。在上面的问题中,我不是指在线地图(Google或Bing地图)中显示用户当前位置,而只是确定用户当前的经纬度,long.f用户当前位置可以在没有互联网连接的情况下计算,然后肯定地找到最近的位置(存储为拉特,长在电话中)不需要互联网连接,可以通过等式来确定 – user1659529

回答

1

嗯,ür第一问题u需要不需要获取您的当前位置的互联网连接。

对于第二个问题,如果你能够获得你的位置坐标(经度,纬度)we will be having some locations as lat,long stored in the application那么你可以计算坐标并找出它们之间的距离。

从坐标

public static float distFrom(float lat1, float lng1, float lat2, float lng2) { 
    double earthRadius = 6371; 
    double dLat = Math.toRadians(lat2-lat1); 
    double dLng = Math.toRadians(lng2-lng1); 
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
       Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * 
       Math.sin(dLng/2) * Math.sin(dLng/2); 
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    double dist = earthRadius * c; 

    return(float)(dist); 
    } 

及其Java实现haversine公式的使用下面的函数计算距离。用它来寻找距离。

+0

感谢NejiHyuga为您提供了有希望的答案。在这种情况下,您可以给出一个编码示例,用于通过手机GPS在内部计算用户当前位置,而无需连接到互联网?这是IOS和Android如果可能 – user1659529

+0

代码更新!! :) – Neji

+0

如果我的答案帮助你,然后不要忘记接受它! – Neji

0

是的,你必须要找到下使用谷歌API 5或东西英里最近的位置信息,与此API,你会发现一切..country信息,最近location..ect

使用此链接: - http://maps.google.com/maps/geo?q=%f,%f&output=json&oe=utf8&sensor=true_or_false&key=ABQIAAAAO_WEDXjKUGDDHu8iB2FQ-xTFGipc9T1i1tjtezgvz0dWKwv3jxTjn5y1VrjIixtSrXmeMwiaCfxS8g

+0

感谢Nivrit Gupta,但为什么我需要使用Google API来查找离这些位置最近的位置,因为这些位置经常在离线状态下存储在手机数据库中? – user1659529

+0

我仍然期待已确认的答案这个职位的两个问题:) – user1659529

+0

你好朋友请使用下面的链接下载演示https://github.com/heardrwt/GeocoderDemo ...在此之后安装此演示在您的设备在你当前位置lat的帮助下,你可以找到最近的位置和其他相关信息。如果你有任何问题,然后让我知道 –