ExcelVBA에서 GoogleAPI 호출 (GoogleMap)

8455 단어 ExcelVBA
GoogleMap을 ExcelVBA (XML로 수신)를 사용하여 표시합니다.

주요 흐름



· "http://www.geocoding.jp/에서 경도, 위도 검색 (XML로 수신)
http://www.geocoding.jp/api?v=1.1&q=(주소 설정)

· GoogleMap에 속성을 전달하여 WebBrowser 객체에 표시합니다.
http://maps.google.com/maps/api/staticmap?size=600x600&zoom=(확대율)&sensor=false&markers=(위 geocoding에서 얻은 경도, 위도 정보)&maptype=(표시 형식)

※표시 형식에 대해서
 roadmap… 도로 지도 보기:
 satellite… 항공 사진:
hybrid… 일반 뷰와 항공 사진 뷰의 복합 뷰
 terrain… 물리지도

샘플





소스 코드
Private Sub okButton_Click()
  SpinButton1.Enabled = True
  no = 10

  Dim xmldoc As MSXML2.XMLHTTP
  Dim myUri As String
  Set xmldoc = CreateObject("MSXML2.XMLHTTP")

  If addressTextBox.Text = "" Then
    MsgBox "正確な住所を入力してください。"
    Exit Sub
  End If

  '住所から座標を取得
  myUri = "http://www.geocoding.jp/api?v=1.1&q=" & addressTextBox.Text
  xmldoc.Open "POST", myUri, False
  xmldoc.send (Null)
  Dim doc As MSXML2.DOMDocument
  Set doc = CreateObject("MSXML2.DOMDocument")
  doc.LoadXML (xmldoc.responseText)
  Dim myNodes As MSXML2.IXMLDOMNodeList
  Set myNodes = doc.SelectNodes("result/coordinate")
  Dim i As Integer
  For i = 0 To myNodes.Length - 1
    myLatitude = myNodes(i).ChildNodes(0).Text
    myLongitude = myNodes(i).ChildNodes(1).Text
  Next
  Call Exe_Map

End Sub

'GoogleMapを表示
Private Sub Exe_Map()

  myAddressCoodinatePosition = myLatitude & "," & myLongitude
  Dim googleUri As String
  Dim myGoogleMapsUri As String
  Dim googleXmldoc As MSXML2.XMLHTTP
  Set googleXmldoc = CreateObject("MSXML2.XMLHTTP")

  'GoogleMapを表示
  googleUri = "http://maps.google.com/maps/api/staticmap?size=600x600&zoom=" & no & "&sensor=false&markers=" & myAddressCoodinatePosition & "&maptype=" & myMapType
  WebBrowser.Navigate googleUri

End Sub

'地図の縮小
Private Sub SpinButton1_SpinDown()
    If no <= 10 Then
        no = 10
        Exit Sub
    Else
        no = no - 1
        Call Exe_Map
    End If

End Sub

'地図の拡大
Private Sub SpinButton1_SpinUp()
    no = no + 1
    Call Exe_Map
End Sub

'道路地図ビュー(roadmap)
Private Sub OptionButton1_Click()
  okButton.Enabled = True
  myMapType = OptionButton1.Caption '値=roadmap
  Call Exe_Map
End Sub

'航空写真(satellite)
Private Sub OptionButton2_Click()
  okButton.Enabled = True
  myMapType = OptionButton2.Caption '値=satellite
  Call Exe_Map
End Sub

'通常のビューと航空写真ビューの複合ビュー(hybrid)
Private Sub OptionButton3_Click()
  okButton.Enabled = True
  myMapType = OptionButton3.Caption '値=hybrid
  Call Exe_Map
End Sub

'物理地図(terrain)
Private Sub OptionButton4_Click()
  okButton.Enabled = True
  myMapType = OptionButton4.Caption '値=terrain
  Call Exe_Map
End Sub

실행 결과

좋은 웹페이지 즐겨찾기