「2117-ol3ex.js」
// default zoom, center and rotation var zoom = 2; var center = [0, 0]; var rotation = 0;
if (window.location.hash !== '') {
/** window.location
* 文書の URL についての情報を含み、また、URL を変更するためのメ
* ソッドを提供をする、 Location オブジェクト を返します。別の
* URL を読み込ませるために、このプロパティに URL を代入すること
* もできます。
* hash [プロパティ] - #記号に続く URL の部分。
* (MDN[https://developer.mozilla.org/ja/docs/Web/API/
* Window/location])
*/
//try to restore center,zoom-level and rotation from the URL // URL から中心、ズームレベルと回転を復元します
var hash = window.location.hash.replace('#map=', '');
/** replace [メソッド]
* 指定された URL に現在の文書を置き換えます。 assign() メソッ
* ドとの違いは、replace() を用いた後、現在のページは、セッショ
* ンの履歴には保持されないことです。つまり、ユーザは、置き換え
* 前のページに戻るために、戻るボタンを使うことができません。
* (MDN[https://developer.mozilla.org/ja/docs/Web/API/
* Window/location])
*/
var parts = hash.split('/');
/** str.split([separator[, limit]])
*separator:区切ることに使用する文字列,limit:分割結果の数の制限
* 文字列を複数の部分文字列に区切ることにより、String オブジェ
* クトを文字列の配列に分割します。
* (MDN[https://developer.mozilla.org/ja/docs/Web/
* JavaScript/Reference/Global_Objects/String/split])
*/
if (parts.length === 4) {
zoom = parseInt(parts[0], 10); /** parseInt(string, radix) * str: 文字列, radix: 基数(進法) * 文字列の引数をパースし、指定された基数の整数を返します。 * (MDN[https://developer.mozilla.org/ja/docs/Web/ * JavaScript/Reference/Global_Objects/parseInt]) */
center = [
parseFloat(parts[1]),
/** parseFloat()
*引数として与えられた文字列を解析し、浮動小数点数を返します。
* (MDN[https://developer.mozilla.org/ja/docs/Web/
* JavaScript/Reference/Global_Objects/parseFloat])
*/
parseFloat(parts[2]) ]; rotation = parseFloat(parts[3]); } }
var map = new ol.Map({
layers: [
new ol.layer.Tile({
/** ol.layer.Tile
* For layer sources that provide pre-rendered, tiled
* images in grids that are organized by zoom levels for
* specific resolutions.
* プリレンダリング(事前描画)を提供するレイヤソースのための、
* 特定の解像度でのズームレベルによって編成されているグリッドの
* タイルイメージ。(ol3 API)
*/
source: new ol.source.OSM()
/** ol.source.OSM
* Layer source for the OpenStreetMap tile server.
* OpenStreetMap タイルサーバのレイヤソース。(ol3 API)
*/
}) ],
controls: ol.control.defaults({
/** controls
* Controls initially added to the map.
* If not specified, ol.control.defaults() is used.
* 初期設定で、マップに追加されたコントロール。
* 明示されていなければ、ol.control.defaults() が使用されます。
* (ol3 API)
*/
/** ol.control.defaults() * デフォルトでは、マップに含まコントロールのセット。 * 特に設定しない限り、これは、以下の各コントロールの * インスタンスを含むコレクションを返します。(ol3 API) * ol.control.Zoom, ol.control.Rotate, ol.control.Attribution */
attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
/** @type
* 値のタイプ(型)の説明 - 式などで表示
* (@use JSDoc[http://usejsdoc.org/]より)
*/
collapsible: false // 折りたたみ
})
}),
target: 'map',
view: new ol.View({
center: center,
zoom: zoom,
rotation: rotation
})
});
var shouldUpdate = true;
var view = map.getView(); /** getView() * Get the view associated with this map. A view * manages properties such as center and resolution. * このマップと関連するビューを取得します。ビューは、 * 中心や解像度のような属性を管理します。 * Return: The view that controls this map.(ol3 API) */
var updatePermalink = function() {
if (!shouldUpdate) {
/** do not update the URL when the view was changed in the * 'popstate' handler * ビューが「popstate」ハンドラで変更されたとき、URL を更新し * ません */
shouldUpdate = true; return; }
var center = view.getCenter(); /** getCenter() * Return: The center of the view.(ol3 API) */
var hash = '#map=' +
view.getZoom() + '/' + /** getZoom() * Get the current zoom level. Return undefined if * the current resolution is undefined or not a * "constrained resolution". * 現在のズームレベルを取得します。現在の解像度が未定義か * 「制約解像度」の場合は undefined を返します。(ol3 API) */
Math.round(center[0] * 100) / 100 + '/' + /** Math.round() * 引数として与えた数を四捨五入して、最も近似の整数を返します。 * (MDN[https://developer.mozilla.org/ja/docs/Web/ * JavaScript/Reference/Global_Objects/Math/round]) */
Math.round(center[1] * 100) / 100 + '/' +
view.getRotation(); /** getRotation() * Returns: The rotation of the view.(ol3 API) */
var state = {
zoom: view.getZoom(),
center: view.getCenter(),
rotation: view.getRotation()
};
window.history.pushState(state, 'map', hash); /** window.history * ブラウザの履歴を扱うためのインタフェースを提供する history * オブジェクトへの参照を返します。 * (MDN[https://developer.mozilla.org/ja/docs/Web/API/ * Window/history]) */
};
map.on('moveend', updatePermalink);
/** on
* Listen for a certain type of event.
* あるタイプのイベントをリッスンします。(ol3 API)
*/
/** restore the view state when navigating through the * history, see * 履歴を通してナビゲートするとき、ビューの状態を復元します。次を * 参照してください * https://developer.mozilla.org/en-US/docs/Web/API/ * WindowEventHandlers/onpopstate
window.addEventListener('popstate', function(event) {
/** EventTarget.addEventListener
* addEventListener は、 1 つのイベントターゲットにイベント
* リスナーを1つ登録します。イベントターゲットは、ドキュメント
* 上の単一のノード、ドキュメント自身、ウィンドウ、あるいは、
* XMLHttpRequest です。
*(MDN[https://developer.mozilla.org/ja/docs/Web/API/
* EventTarget.addEventListener])
*/
if (event.state === null) {
return;
}
map.getView().setCenter(event.state.center);
map.getView().setZoom(event.state.zoom);
map.getView().setRotation(event.state.rotation);
shouldUpdate = false;
});



0 件のコメント:
コメントを投稿