Last active
September 19, 2015 19:34
-
-
Save frogcat/03de190f5c3e243ed8a3 to your computer and use it in GitHub Desktop.
地理院標高タイルを使った valhalla Elevation Service API Reference の実装 (ただし単一点のみ)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!doctype html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<title>dem</title> | |
</head> | |
<body> | |
<pre id="pre">Please wait</pre> | |
<script> | |
function elevation(json, callback) { | |
var llz2zxy = function(lat, lon, z) { | |
var r = lat * Math.PI / 180 | |
var n = Math.pow(2, z); | |
var x = Math.floor(n * ((lon + 180) / 360)); | |
var y = Math.floor(n * (1 - (Math.log(Math.tan(r) + 1 / Math.cos(r)) / Math.PI)) / 2); | |
return [ z, x, y ]; | |
}; | |
if (json.encoded_polyline) { | |
alert("ToDo : support encoded polyline"); | |
return; | |
} | |
if (json.shape && json.shape.length != 1) { | |
alert("ToDo : support multi point shape."); | |
return; | |
} | |
var lat = json.shape[0].lat; | |
var lon = json.shape[0].lon; | |
var zxy14 = llz2zxy(lat, lon, 14); | |
var zxy22 = llz2zxy(lat, lon, 22); | |
var url = "http://cyberjapandata.gsi.go.jp/xyz/dem/" + zxy14.join("/") + ".txt"; | |
var xhr = new XMLHttpRequest(); | |
xhr.onload = function() { | |
var x = zxy22[1] % 256; | |
var y = zxy22[2] % 256; | |
var h = parseFloat(xhr.responseText.split("\n")[y].split(",")[x]); | |
// ToDo : support range | |
callback({ | |
shape : json.shape, | |
height : [ h ] | |
}); | |
}; | |
xhr.open("get", url, true); | |
xhr.send(); | |
} | |
elevation({ | |
"shape" : [ { | |
"lat" : 35.6184, | |
"lon" : 139.2143 | |
} ] | |
}, function(json) { | |
document.getElementById("pre").innerHTML = JSON.stringify(json, null, " "); | |
}); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment