Hi, I am changing a script that is used in ArcMap to create a UIControltool, which allows you that an available StreetView at a given coordinate in your Map pop-ups, to the ArcScene environment. I have the following problem: google opens but not at the right coordinates. I think there is an error in my definition of the spatial reference for ArcScene, but I do not know where...can somebody help?
Here is the script:
Option Explicit
Const SW_SHOWMAXIMIZED = 3 Const SW_SHOWMINIMIZED = 2 Const SW_SHOWDEFAULT = 10 Const SW_SHOWMINNOACTIVE = 7 Const SW_SHOWNORMAL = 1
Private Declare Function ShellExecute Lib "shell32.dll" _ Alias "ShellExecuteA" (ByVal hWnd As Long, _ ByVal lpOperation As String, ByVal lpFile As String, _ ByVal lpParameters As String, ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long
Private Function OpenLocation(URL As String, WinState As Long) As Long
'PURPOSE: Opens default browser to display URL
'RETURNS: module handle to executed application or
'Error Code ( < 32) if there is an error
'can also be used to open any document associated with
'an application on the system (e.g., passing the name
'of a file with a .doc extension will open that file in Word)
Dim lHWnd As Long
Dim lAns As Long
lAns = ShellExecute(lHWnd, "open", URL, vbNullString, _
vbNullString, WinState)
OpenLocation = lAns
'ALTERNATIVE: if not interested in module handle or error
'code change return value to boolean; then the above line
'becomes:
'OpenLocation = (lAns > 32)
End Function
Private Sub GoogleMap_Link_MouseDown(ByVal button As Long, ByVal shift _ As Long, ByVal x As Long, ByVal y As Long)
Dim pSXDoc As ISxDocument
Dim pApp As ISxApplication
Dim pActiveView As IActiveView
Dim pScene As IScene
Dim pPoint As IPoint
Dim pSpatialReferenceFactory As ISpatialReferenceFactory
Dim pSpatialReference As ISpatialReference
Set pSXDoc = ThisDocument
Set pScene = pSXDoc.Scene
Set pActiveView = pScene
Set pApp = Application
Set pSpatialReferenceFactory = New SpatialReferenceEnvironment
Set pSpatialReference = pSpatialReferenceFactory.CreateGeographicCoordinateSystem(esriSRGeoCS_WGS1984)
' convert mouse click to map units
Set pPoint = pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y)
Set pPoint.SpatialReference = pScene.SpatialReference
If pPoint.SpatialReference.Name <> pSpatialReference.Name Then
pPoint.Project pSpatialReference
End If
Dim URLstr As String
Dim returnLong As Long
'more info on google map URL query string request setting parameters: 'http://mapki.com/index.php?title=Google_Map_Parameters
'STREET VIEW USE THIS FUNCTION
URLstr = "http://www.google.com/maps?ie=UTF8&layer=c&cbll=" & _
pPoint.y & "," & pPoint.x & "&cbp=1,0,,0,5&ll=" & pPoint.y _
& "," & pPoint.x & "&z=16"
'REGULAR MAP USE THIS FUNCTION ... NO STREETVIEW WINDOW
'URLstr = "http://www.google.com/maps?ie=UTF8&ll=" & pPoint.y _
& "," & pPoint.x & "&spn=0.015045,0.016844&z=16"
'Use one of the constants as the window state parameter
returnLong = OpenLocation(URLstr, SW_SHOWNORMAL)
End Sub