lamarn 发表于 2009-11-8 14:58:35

从Autocad到google maps

有没有办法将坐标从Autocad传递到google maps以显示
(一个简单的程序,可以让它从Autocad内部弹出到浏览器中。)

Crank 发表于 2009-11-15 10:41:00

试试这个。

Keith™ 发表于 2009-11-16 14:24:05

我已经有一段时间没有做VBA了,所以请原谅代码的质量
您可以使用webbrowser控件、2个文本框(tbLatLong和tbZoom)和一个按钮创建表单Private Sub CommandButton1_Click()
' sample http request
    'http://maps.google.com/?ll=29,-82&z=18
    'zoom level -1= whole world, 20= as close as possible
    Dim call_string As String
    Dim lat_long As String
    Dim zoom as String
    lat_long = Me.tbLatLong.Text
    zoom = Me.tbZoom.Text
    call_string = "http://maps.google.com/?ll=" & lat_long & "&z=" & zoom
    Me.WebBrowser1.Navigate call_string
End Sub
在此绘图中,添加一个子例程Public Sub ShowMap()
   
    Dim map_formAs UserForm1
    Set map_form = New UserForm1
    map_form.Show
End Sub
您可以轻松获得视口中心,将其转换为latlong,并使用这些坐标将谷歌地图置于图形中心
此链接http://mapki.com/wiki/Google_Map_Parameters有更多关于谷歌地图http呼叫的信息
如果你有一个googleMaps API密钥,你可以将数据嵌入你自己的网站,并对显示的内容(如多边形、点标记等)有更多的控制权 http://code.google.com/apis/maps/我编写了一个Ruby on Rails应用程序,它从Autocad中提取多段线,并将其显示在谷歌地图上&nbsp
如果您感兴趣,我可以发布该代码

Keith™ 发表于 2010-10-24 15:04:45

您好,我现在读了这些注释和代码。我的问题是:“我的朋友,我的朋友。”;这些是否适用于Google earth或与Google maps不兼容的格式和对象
谢谢你的好建议。

Keith™ 发表于 2010-10-27 10:26:52

完全可以将多段线的坐标传递给谷歌地图,但需要考虑很多因素
首先,多段线坐标必须是UTM(即经度和纬度)
接下来,您必须在地图浏览器中嵌入javascript才能传递点
最后,您必须使用谷歌API从点构建多段线,并将其设置到地图中
有几个注意事项…webbrowser控件允许您调用脚本(请记住Javascript区分大小写),但它只允许您传递单个变量。好消息是,变量必须是javascript函数的每个必需参数的数组
考虑到您有一个要显示的标记,您可能只需要传递一个地理编码点(-112.53412,84.84533),这样您的javascript函数就可以接受两个变量,一个代表经度,一个表示纬度。然而,如果您需要传递未知数量的垂直度,javascript函数将不会接受超出其定义处理范围的变量。要解决此问题,请使用带分隔符的字符串作为点数组,然后将分隔符传递给javascript函数
'This is our argument array
Dim Args(1) As String
'Build our list of points, X & Y coords (i.e. Lon/Lat)
For N = 0 to polypoints.count - 1
Args(0) = Args(0) & polypoints(N).X & "," & polypoints(N).Y
Next
'Pass our delimiter
Args(1) = ","
'Call the script
WebBrowser1.document.InvokeScript("MakePoly",Args)
function MakePoly(points, delimiter){
//you need to unpack your points using the delimiter
//and create an array of GLatLng for API V2 or LatLng for API V3
//polyline building code goes here
}
在我发火之前,我已经't使用VBA有一段时间了,因此示例可能包含错误。特别是对于AutoCAD对象…我可以'我真不敢相信我忘记这些事情的速度有多快…
顺便提一句,你也可以将函数的值作为com对象返回给你的调用函数,但没有关于如何与它交互的文档,虽然我已经取得了一些进展,但它在很大程度上是碰运气的,尽管字符串和标记返回得很好,并且相对容易交互和操作
祝你好运!

Keith™ 发表于 2010-10-27 13:52:48

您好,谢谢Keith的回答;UTM(即经纬度);我不知道'我不明白UTM是指XXXXXX E、XXXXXX N或弧度格式的fil和λ弧?

Keith™ 发表于 2010-10-27 15:07:41

UTM=Universal Transversal Mercator纬度和经度是所需的格式(十进制).
例如,如果您的多段线是从0,0到12,3到12,6,则google maps中的结果多段线将从经度0和纬度0开始,然后继续到经度12和纬度3,然后是经度12,纬度6,因此在真实应用程序中不可用
在将多段线发送到谷歌地图之前,您需要在经度/纬度坐标中绘制多段线或将其转换为经度/纬度。

Keith™ 发表于 2010-10-27 15:46:13

嗨,亲爱的Keith,我知道UTM是;通用横墨卡托投影系统,我知道在这个系统中,坐标是在一个平面上的线性格式,如笛卡尔系统中的x和y,其原点是从500000开始的;以此类推,但经纬度坐标don#039;t线性格式,它们是角度形式(弧度单位或曲线中的圆弧),位于非平面的表面上,如果可能使用负x,则系统为UTM,它's坐标为直线格式,负表示点位于西半球,如果为正,则位于东半球。请告诉我UTM坐标(线性)格式是必须使用或曲线(圆弧)坐标或两者都使用
请注意,角度坐标从北0到90度开始,向南0到-90度,对于其中的另一个,角度坐标在0到180度之间变化;在其他方向为0到-180,因此UTM成员#039 字符串长度大于大地测量格式:丑:非常感谢

Keith™ 发表于 2010-10-27 17:33:28

我不确定我是否理解这个问题…但以防万一…
坐标必须是经纬度格式。对于经度,任何介于-180和180之间的实数,以及纬度,任何介于-90和90之间的实值。此外,谷歌地图仅处理线性格式的多段线,不允许使用圆弧或曲线。本质上,在形状文件中可以接受的任何内容都可以在谷歌地图中接受
如果你不'如果没有正确的坐标,几乎不可能正确绘制它们。

Keith™ 发表于 2010-10-27 17:50:10

嗨,亲爱的基思,如果它们在-180和180之间,在-90和90之间,那么它们在曲线坐标中,我们必须使用fi和在坐标附近,我们必须在程序中使用fi和lambda(角度格式),所以我明天检查它,我&35;039;我会写信给你的:非常感谢,祝你好运
页: [1] 2
查看完整版本: 从Autocad到google maps