最近在做unity3d与Gis结合的项目,最基本的就是坐标的转换问题,比如把经纬度为(166.23.9.27 , 39.55.15.74) 转换到unity里面成相应的位置点,废话不多说 上代码:

using UnityEngine;
using System.Collections; public class SaiGetLatLog : MonoBehaviour { public Transform firstPoint; //Unity中左上点
public Transform secondPoint;//Unity中右下点 public SaiEarth firstSai;//地图中对应的左上经纬度点
public SaiEarth secondSai;//地图中对应的右下经纬度点 private float z_offset,x_offset,z_w_offset,x_w_offset; private RaycastHit rayHit; // Use this for initialization
void Start () {
InitBasicNum ();//初始化参数
} // Update is called once per frame
void Update () {
if (Input.GetMouseButton () && Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out rayHit, Mathf.Infinity)) { print ( getWorldPoint(firstSai).x+","+ getWorldPoint(firstSai).z); }
} void InitBasicNum()
{ firstSai = new SaiEarth (new Vector3 (116f, 23f, 9.27f), new Vector3 (39f, 55f, 15.74f));
secondSai = new SaiEarth (new Vector3(116f,23f,44.39f),new Vector3(39f,54f,44.27f)); z_offset = Mathf.Abs ((firstSai.latitude.x+firstSai.latitude.y/+firstSai.latitude.z/) - (secondSai.latitude.x+secondSai.latitude.y/+secondSai.latitude.z/));//地图中的维度差
x_offset = Mathf.Abs ((firstSai.longitude.x+firstSai.longitude.y/+firstSai.longitude.z/)-(secondSai.longitude.x+secondSai.longitude.y/+secondSai.longitude.z/));//地图中的经度差 z_w_offset = Mathf.Abs (firstPoint.localPosition.z - secondPoint.localPosition.z);//unity中的维度差
x_w_offset = Mathf.Abs (firstPoint.localPosition.x - secondPoint.localPosition.x);//unity中的经度差 } Vector3 getWorldPoint(SaiEarth se)//由经纬度得到位置点
{ float tempX = (float)(se.longitude.x + se.longitude.y / + se.longitude.z / - (secondSai.longitude.x + secondSai.longitude.y / + secondSai.longitude.z / ));
float tempZ = (float)(se.latitude.x + se.latitude.y / + se.latitude.z / - (secondSai.latitude.x + secondSai.latitude.y / + secondSai.latitude.z / )); float _tempX = (float)(tempX * x_w_offset / x_offset + secondPoint.localPosition.x);
float _tempZ = (float)(tempZ * z_w_offset / z_offset + secondPoint.localPosition.z); return new Vector3((float)_tempX,0f,(float)_tempZ); } SaiEarth getLatLon(Vector3 curPoint)//由位置点得到经纬度
{
SaiEarth tempEarth = new SaiEarth(); float _z_offset = Mathf.Abs (curPoint.z - secondPoint.localPosition.z) * z_offset / z_w_offset;
float _x_offset = Mathf.Abs (curPoint.x - secondPoint.localPosition.x) * x_offset / x_w_offset; float resultX = _x_offset + (secondSai.longitude.x + secondSai.longitude.y/ + secondSai.longitude.z/);
float resultZ = _z_offset + (secondSai.latitude.x + secondSai.latitude.y/ + secondSai.latitude.z/); tempEarth.longitude = new Vector3 ((int)resultX, (int)((resultX - (int)resultX)*),((resultX - (int)resultX)* - (int)((resultX - (int)resultX)*))*);
tempEarth.latitude = new Vector3 ((int)resultZ, (int)((resultZ - (int)resultZ)*),((resultZ - (int)resultZ)* - (int)((resultZ - (int)resultZ)*))*); return tempEarth; } }

上面有一个SaiEarth的类,其实写的很简单:

using UnityEngine;
using System.Collections; public class SaiEarth { public Vector3 longitude;
public Vector3 latitude; public SaiEarth()
{ } public SaiEarth(Vector3 longitude,Vector3 latitude)
{
this.latitude = latitude;
this.longitude = longitude;
} public string toString()
{
return "Lat:"+this.latitude + ",Long:" + this.longitude;
}
}

来源:http://blog.csdn.net/saide6000/article/details/26992945

最新文章

  1. CozyRSS开发记录-中断
  2. Canvas是什么
  3. 3D碰撞检测
  4. 分布式助手Zookeeper(一)
  5. 引用System.Runtime.Serialization.Json
  6. OSA-MAC: A MAC Protocol for Opportunistic Spectrum Access in Cognitive Radio Networks
  7. jquery学习(2)--选择器
  8. MSI文件静默安装
  9. HDU1171:Big Event in HDU(多重背包分析)
  10. 配置静态监听解决ORA-12514错误的案例(转)
  11. c++模板使用及实现模板声明定义的分离
  12. CoreData的简单使用
  13. 【数学建模】day09-聚类分析
  14. Django之MVC框架与MTV框架详解
  15. 从零开始部署CAS服务器
  16. A标签实现文件下载功能
  17. MySQL纯透明的分库分表技术还没有
  18. dsu on tree总结
  19. VC中的学习点滴
  20. 并发队列ConcurrentLinkedQueue与阻塞队列LinkedBlockingQueue的区别

热门文章

  1. 已知tomcat应用名称,如何查询该应用端口号
  2. FreeSwitch无法启动,提示进程pid锁定的解决方法
  3. canvas的getImageData和putImageDataAPI
  4. alter table fx.pet modify column `species` varchar(20) binary;
  5. 如何将bug杀死在摇篮里?
  6. Mantis去掉登录界面的“注册一个新账号”链接
  7. spring的开发
  8. windows默认共享的打开和关闭?
  9. Java Web:主动和被动方式检测安全的框架
  10. June 15th 2017 Week 24th Thursday