乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 222|回复: 14

从Autocad到谷歌地图

[复制链接]

24

主题

151

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
247
发表于 2009-11-8 14:58:35 | 显示全部楼层 |阅读模式
有没有办法将坐标从Autocad传递到google maps以显示
(一个简单的程序,可以从Autocad内部在浏览器中弹出。)

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

8

主题

241

帖子

23

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
257
发表于 2009-11-15 10:41:00 | 显示全部楼层
试试这个。
回复

使用道具 举报

3

主题

88

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2009-11-16 14:24:05 | 显示全部楼层
我已经有一段时间没有做任何VBA了,所以请原谅代码的质量
您可以使用webbrowser控件、两个文本框(tbLatLong和tbZoom)和一个按钮创建表单。
  1. Private Sub CommandButton1_Click()
  2. ' sample http request
  3.     'http://maps.google.com/?ll=29,-82&z=18
  4.     'zoom level -  1= whole world, 20= as close as possible
  5.     Dim call_string As String
  6.     Dim lat_long As String
  7.     Dim zoom as String
  8.     lat_long = Me.tbLatLong.Text
  9.     zoom = Me.tbZoom.Text
  10.     call_string = "http://maps.google.com/?ll=" & lat_long & "&z=" & zoom
  11.     Me.WebBrowser1.Navigate call_string
  12. End Sub

在此绘图中,添加一个子例程
  1. Public Sub ShowMap()
  2.    
  3.     Dim map_form  As UserForm1
  4.     Set map_form = New UserForm1
  5.     map_form.Show
  6. End Sub

您可以轻松获得视口中心,将其转换为latlong,并使用这些坐标将谷歌地图居中于图形中心
此链接http://mapki.com/wiki/Google_Map_Parameters有更多关于谷歌地图http调用的信息
如果您获得了googleMaps API密钥,您可以将数据嵌入自己的网站,并对显示内容(如多边形、点标记等)有更多的控制权。  http://code.google.com/apis/maps/
我编写了一个小型Ruby on Rails应用程序,它从Autocad中提取多段线,并将其显示在谷歌地图上。
如果您感兴趣,我可以发布该代码。
回复

使用道具 举报

4

主题

17

帖子

3

银币

初来乍到

Rank: 1

铜币
33
发表于 2010-10-24 15:04:45 | 显示全部楼层

,我现在读了这些笔记和代码,我的问题是:“这些是可用于谷歌地球还是格式和对象与谷歌地图不兼容? :
感谢您的好建议。
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2010-10-27 10:26:52 | 显示全部楼层
完全有可能将折线的坐标传递给谷歌地图,但是有很多考虑因素。
首先,折线坐标必须是UTM(即经度和纬度)。
接下来,您必须在地图 Web 浏览器中嵌入一个 javascript 才能传递您的点。
最后,您必须使用Google API从点构造折线并将其设置为地图。
有一些警告...Web浏览器控件将允许您调用脚本(请记住Javascript是区分大小写的),但它只允许您传递单个变量。好消息是,变量必须是 javascript 函数的每个必需参数的数组。
考虑到您要显示一个标记,您可能只需要传递一个地理编码点(-112.53412,84.84533),因此您的javascript函数可以接受2个变量,一个用于经度,一个用于纬度,但是,如果您需要传递未知数量的折点,则javascript函数将不会接受超过其定义处理的变量。要解决此问题,请使用带分隔符的字符串作为 points 数组,然后将分隔符传递给 javascript 函数。
  1. 'This is our argument array
  2. Dim Args(1) As String
  3. 'Build our list of points, X & Y coords (i.e. Lon/Lat)
  4. For N = 0 to polypoints.count - 1
  5. Args(0) = Args(0) & polypoints(N).X & "," & polypoints(N).Y
  6. Next
  7. 'Pass our delimiter
  8. Args(1) = ","
  9. 'Call the script
  10. WebBrowser1.document.InvokeScript("MakePoly",Args)
  1. function MakePoly(points, delimiter){
  2. //you need to unpack your points using the delimiter
  3. //and create an array of GLatLng for API V2 or LatLng for API V3
  4. //polyline building code goes here
  5. }

在我发热之前,我有一段时间没有使用VBA了,所以这个例子可能包含错误..特别是AutoCAD对象...我不敢相信我忘记这些事情的速度有多快...
顺便说一句,您也可以将函数的值作为com对象返回给调用函数,但是没有关于如何与它交互的文档,尽管我已经取得了一些进展,但它在大多数情况下被击中并错过,尽管字符串和标记返回得很好,并且相对容易交互和操作。
祝你好运!
回复

使用道具 举报

4

主题

17

帖子

3

银币

初来乍到

Rank: 1

铜币
33
发表于 2010-10-27 13:52:48 | 显示全部楼层

,谢谢Keith的回答
,你写了“UTM(即经度和纬度)”,我不明白UTM的意思是xxxxxxE,xxxxxxxN或弧度格式的fil和lambda弧?
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2010-10-27 15:07:41 | 显示全部楼层
UTM=Universal Transversal Mercator
纬度和经度是所需的格式(十进制)…
例如,如果您的多段线是从0,0到12,3到12,6,则google地图中的合成多段线将从
经度0和纬度0开始,然后继续到经度12和纬度3,然后是经度12与纬度6,因此在实际应用程序中不可用
在将多段线发送到谷歌地图之前,您需要以经度/纬度坐标绘制多段线或将其转换为经度/纬度。
回复

使用道具 举报

4

主题

17

帖子

3

银币

初来乍到

Rank: 1

铜币
33
发表于 2010-10-27 15:46:13 | 显示全部楼层
你好,亲爱的Keith
我知道UTM是通用横轴墨卡托投影系统,我也知道在这个系统中,坐标是平面中的线性格式,就像笛卡尔系统中的x和y,其原点从500000开始,等等,但是经度/纬度坐标不是线性格式,它们是角度形式(弧度单位的弧或曲线)并且位于非平面上, 如果有可能使用负的x,那么系统是UTM,它的坐标是直线格式,负的意味着点位于西半球,如果是正的,它位于东半球。 请告诉我UTM坐标(直线)格式是必须使用还是曲线(圆弧)坐标或者两者都用。
请注意,角坐标从0到90度开始向北,从0到-90度向南,对于另一个方向,其中一个从0到180度和0到-180度在其他方向变化,因此UTM成员的字符串比大地测量格式长:难看:
非常感谢
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2010-10-27 17:33:28 | 显示全部楼层
我不确定我理解了这个问题...但是为了以防万一...
坐标必须采用经度和纬度格式。经度为-180到180之间的任意实数,纬度为-90到90之间的任意实数。
此外,谷歌地图仅处理线性格式的折线,不允许使用弧线或曲线..本质上,shapefile中可接受的任何东西在google map中都是可接受的。
如果没有正确的坐标,几乎不可能正确绘制它们。
回复

使用道具 举报

4

主题

17

帖子

3

银币

初来乍到

Rank: 1

铜币
33
发表于 2010-10-27 17:50:10 | 显示全部楼层
嗨,亲爱的Keith
如果它们在-180和180之间以及-90和90之间,那么它们在曲线坐标中,我们必须在程序中使用fi和lambda(角度格式),所以我明天检查它,我会给你写信。:loco:
非常感谢,祝你好运
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-1 09:49 , Processed in 0.258127 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表