unity3d 怎么精确经纬度精确定位

[转&&&技术贴]开一个unity的GPS定位专题,
/bbs/read.php?tid=204
unity在移动设备上的lbs专题,包括gps定位,wifi或者基站定位等等。
有知道的、了解的、做过相关项目的来讨论讨论。
什么“度娘”,什么“xx群”,什么“专家博客”等等,都不给力。还是要感谢国外朋友的经验分享,并且通过自己的不断尝试。
&&&&&&&&&&&&
首先介绍下如何通过经纬度在地图上定位。这个只是辅助验证代码中得到的纬度经度是不是足够准确而已。
1.下载安装google earth,运行。
2.工具-&选项,根据你的经纬度格式来选择“显示纬度/经度”,我选择“小数度数”
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/bbs/attachment/Mon__f47e385d5e19f65.jpg?88" BORDER="0" STYLE="max-width: 700 max-height: 700"
ALT="[转&&&技术贴]开一个unity的GPS定位专题,"
TITLE="[转&&&技术贴]开一个unity的GPS定位专题," />
3.假设我从代码中得到纬经度是:31.1
4.然后添加地标,点击“大头针”图标
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/bbs/attachment/Mon__6bd577cc2360b9b.jpg?16" BORDER="0" STYLE="max-width: 700 max-height: 700"
ALT="[转&&&技术贴]开一个unity的GPS定位专题,"
TITLE="[转&&&技术贴]开一个unity的GPS定位专题," />
5.填写刚才的纬经度,起名“11111”,确认,如下图:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/bbs/attachment/Mon__681d82b2ad10945.jpg?61" BORDER="0" STYLE="max-width: 700 max-height: 700"
ALT="[转&&&技术贴]开一个unity的GPS定位专题,"
TITLE="[转&&&技术贴]开一个unity的GPS定位专题," />
6.ok,可以在地图上找到了,如下:
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/bbs/attachment/Mon__f9d.jpg?59" BORDER="0" STYLE="max-width: 700 max-height: 700"
ALT="[转&&&技术贴]开一个unity的GPS定位专题,"
TITLE="[转&&&技术贴]开一个unity的GPS定位专题," />
&&&&&&&&&&
接下来我们来做最重要的事情了,使用unity api实现GPS定位,代码如下:
using UnityE
using System.C
using System.T
public class LBS : MonoBehaviour
&&&&//label在界面上显示调试信息//
&&&&public
&&&&private
&&&&//上次位置信息//
&&&&private
LocationInfo lastLocationI
&&&&private
float posScale = 1;
&&&&private
Vector2 globalP
&&&&private
bool gpsRunning =
&&&&//精度决定了资源的消耗,精度要求越高资源消耗越大//
&&&&public
float gpsAccuracy = 500;
&&&&public
float gpsUpdateDistance = 100;
Start () {
&&&&&&&&try
&&&&&&&&&&&&iPhoneSettings.StartLocationServiceUpdates
catch (Exception e) {
&&&&&&&&&&&&Debug.LogException
&&&&&&&&lastLocationInfo
= iPhoneInput.lastL
&&&&&&&&showDebuginfo
("last = " + lastLocationInfo.latitude + "," +
lastLocationInfo.longitude);
&&&&&&&&StartGPS
&&&&public
void StartGPS () {
&&&&&&&&//非手持设备则终止//
&&&&&&&&if
(Application.isEditor) {
&&&&&&&&&&&&
&&&&&&&&if
(!gpsRunning) {
&&&&&&&&&&&&StartCoroutine
(ActivateGPS ());&&
&&&&IEnumerator
ActivateGPS () {
&&&&&&&&if
(Input.location.isEnabledByUser) {
&&&&&&&&&&&&showDebuginfo("GPS
not available");
&&&&&&&&gpsRunning
&&&&&&&&Input.location.Start
(gpsAccuracy, gpsUpdateDistance);
&&&&&&&&showDebuginfo
("status = " +
Input.location.status);&&
&&&&&&&&float
duration = 0;
&&&&&&&&while
(duration & 30.0f) {
&&&&&&&&&&&&print
("=" + duration + " , " + Input.location.status);
&&&&&&&&&&&&if
(Input.location.status == LocationServiceStatus.Running ||
Input.location.status == LocationServiceStatus.Failed) {
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
&&&&&&&&&&&&yield
return new WaitForSeconds(1.0f);
&&&&&&&&&&&&duration
&&&&&&&&if
(duration &= 30.0f) {
&&&&&&&&&&&&showDebuginfo
("Timed out");
&&&&&&&&if
(Input.location.status == LocationServiceStatus.Failed) {
&&&&&&&&&&&&showDebuginfo
("Failed.");
&&&&&&&&&&&&gpsRunning
&&&&&&&&while
(Input.location.status == LocationServiceStatus.Running)
&&&&&&&&&&&&globalPos.x
= Input.location.lastData.
&&&&&&&&&&&&globalPos.y
= Input.location.lastData.
&&&&&&&&&&&&print
("globalPos=" + globalPos.x + "," + globalPos.y);
&&&&&&&&&&&&yield
return new WaitForSeconds(2.0f);
&&&&&&&&showDebuginfo
Update () {
&&&&&&&&globalPos.x
= Input.location.lastData.
&&&&&&&&globalPos.y
= Input.location.lastData.
&&&&public
void StopGPS () {
&&&&&&&&Input.location.Stop
&&&&&&&&gpsRunning
OnApplicationQuit () {
&&&&&&&&StopAllCoroutines
&&&&&&&&Input.location.Stop
&&&&//调试信息//
showDebuginfo (string
&&&&&&&&Debug.Log
&&&&&&&&debugstr
+= str + ",";
&&&&&&&&debuglabel.GetComponent
本部分内容设定了隐藏,需要回复后才能看到
&&&&&&&&&&
以上是unity代码中直接实现gps定位,除此之外还可以用plugin的方式来实现。
官方对插件的描述这里就不重复了,篇幅比较大,请参考:
篇幅过长不好,另起一贴研究plugin:&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。本帖子已过去太久远了,不再提供回复功能。匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
经纬度精确到毫秒,可以定位到最精确的区域是多大平方纬度数据格式为:“纬度分(2位)纬度秒(2位)纬度毫秒(4位)”经度数据格式为:“经度分(3位)经度秒(2位)经度毫秒(4位)”这样的精确度可以定们到地面上的区域的面积是多少呢?大概的面积就可以.会不会精确到0.5平方米之类?不要求计算,只要大略的估计一下,在这种精度下的经度能不能定位在0.5平米以内的区域
為伱鍾情00146
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
地球的周长40000km.纬度1度 = 大约111km 纬度1分 = 大约1.85km 纬度1秒 = 大约30.9m 纬度1毫秒=0.309米单位经度的长度随着纬度的不同而变化,所以不确定,我们可以假设是在赤道地区,那么经度1毫秒就和纬度相同.经度1毫秒=0.309米所以面积就是0.309*0.309=0.09平方米
为您推荐:
其他类似问题
经度的话可以计算的,纬度的话计算很麻烦,所以精确到多大面积也是不一定的。
扫描下载二维码

我要回帖

更多关于 unity 获取经纬度 的文章

 

随机推荐