私は現在データリストを扱っていますが、データの列の1つはリストのアドレスです。それぞれの住所をGoogleマップにプロットする予定ですが、パラメータを取得するために手動で住所をGoogleに貼り付ける必要はありません。経度、緯度が必要です。私のExcelシート(またはGoogleドキュメントスプレッドシートにあります)には、約500のアドレスが含まれています。
だから私はそれを自動的に行う方法があることを望んでいましたか?
この素晴らしい投稿の礼儀 http://policeanalyst.com/using-the-google-geocoding-api-in-Excel/
Function GoogleGeocode(address As String) As String
Dim strAddress As String
Dim strQuery As String
Dim strLatitude As String
Dim strLongitude As String
strAddress = URLEncode(address)
'Assemble the query string
strQuery = "http://maps.googleapis.com/maps/api/geocode/xml?"
strQuery = strQuery & "address=" & strAddress
strQuery = strQuery & "&sensor=false"
'define XML and HTTP components
Dim googleResult As New MSXML2.DOMDocument
Dim googleService As New MSXML2.XMLHTTP
Dim oNodes As MSXML2.IXMLDOMNodeList
Dim oNode As MSXML2.IXMLDOMNode
'create HTTP request to query URL - make sure to have
'that last "False" there for synchronous operation
googleService.Open "GET", strQuery, False
googleService.send
googleResult.LoadXML (googleService.responseText)
Set oNodes = googleResult.getElementsByTagName("geometry")
If oNodes.Length = 1 Then
For Each oNode In oNodes
strLatitude = oNode.ChildNodes(0).ChildNodes(0).Text
strLongitude = oNode.ChildNodes(0).ChildNodes(1).Text
GoogleGeocode = strLatitude & "," & strLongitude
Next oNode
Else
GoogleGeocode = "Not Found (try again, you may have done too many too fast)"
End If
End Function
Public Function URLEncode(StringVal As String, Optional SpaceAsPlus As Boolean = False) As String
Dim StringLen As Long: StringLen = Len(StringVal)
If StringLen>0 Then
ReDim result(StringLen) As String
Dim i As Long, CharCode As Integer
Dim Char As String, Space As String
If SpaceAsPlus Then Space = "+" Else Space = "%20"
For i = 1 To StringLen
Char = Mid$(StringVal, i, 1)
CharCode = Asc(Char)
Select Case CharCode
Case 97 To 122, 65 To 90, 48 To 57, 45, 46, 95, 126
result(i) = Char
Case 32
result(i) = Space
Case 0 To 15
result(i) = "%0" & Hex(CharCode)
Case Else
result(i) = "%" & Hex(CharCode)
End Select
Next i
URLEncode = Join(result, "")
End If
End Function
あなたはそれがあなたのために仕事をするようにあなたのグーグルスプレッドシートに小さなgooglアプリスクリプトを加えることができます。 ここ デモ(住所を追加すると、ジオコーディングされます)。
そして、ジオコーディングを実行するためのコードの下:
function getLatLong(adress) {
try{
if(adress=="")return("");
var geo = Maps.newGeocoder().geocode(adress);
if(geo.status=="OK"){
var lng = geo.results[0].geometry.viewport.southwest.lng;
var lat = geo.results[0].geometry.viewport.southwest.lat;
return([lat,lng]);
}
else{
return("error");
}
}
catch(err){
return(err);
}
}
SmartyStreets 米国および国際住所のジオコーディングを提供します。使い方はとても簡単です。リストをWebツールに貼り付けると、緯度と経度が数秒で返されます。同様の方法でlat/longデータを返すことができる他のサービスがあります。私はそこで働いているので、SmartyStreetsに最も精通しています。
また、Googleはアドレスを最初に検証しないため、アドレスをGoogleマップに貼り付けても必ずしも正確な情報が得られるとは限らないことに注意してください。 SmartyStreetsはそうします。これにより、Googleの最善の推測ではなく、実際の場所に関するデータを確実に取得できます。
あなたがチェックしたいと思うかもしれない他の解決策: AddressDoctor 、 Loqate 、または他の「国際住所ジオコーディング」プロバイダー(グーグルですばやく検索するといくつかの素晴らしいオプションが見つかります)。
コードを挿入するのではなく、データをGoogleスプレッドシートに転送し、すばらしいテーブルアドオンでジオコードを含めることをお勧めします。その時点から、住所を1つの列に配置し、住所列を選択してジオコーディングするだけです。