ラベル Zoom Slider の投稿を表示しています。 すべての投稿を表示
ラベル Zoom Slider の投稿を表示しています。 すべての投稿を表示

2014年10月2日木曜日

2 - ol3ex 14b - ZoomSlider control 2

「zoomslider.js(214-ol3ex.js)」は、地図を表示するのに必要な javascript です。
「214-ol3ex.js」
/**
 * Helper method for map-creation.
 *
 * @param {string} divId The id of the div for the map.
 * divId は map の div 要素の id
 * @return {ol.Map} The ol.Map instance.
 */
 /** 「@param」
  * The @param tag provides the name, type, and 
  * description of a function parameter.
  * The @param tag requires you to specify the name of 
  * the parameter you are documenting. You can also 
  * include the parameter's type, enclosed in curly 
  * brackets, and a description of the parameter.
  * @paramタグは、関数パラメータの名前と型、説明を提供します。
  * @paramタグを使用すると、文書化されたパラメータの名前を
  * 指定する必要があります。また、パラメータのタイプと、中括弧
  * で囲まれたおよびパラメータの説明を含めることができます。
  * (@use JSDoc [http://usejsdoc.org/tags-param.html])
  */
 /** @return(@returns と同義)
  * The @returns tag documents the value that a function 
  * returns.
  * @returns タグは、関数が返す値について説明します。
  * (@use JSDoc [http://usejsdoc.org/tags-returns..html])
  */
var createMap = function(divId) {
 var source, layer, map, zoomslider, resolutions;

 source = new ol.source.MapQuest({layer: 'sat'});
 /** ol.source.MapQuest
  * Layer source for the MapQuest tile server.
  * MapQuest タイルサーバのレイヤソース。(ol3 API
  * 2 - ol3ex 23b - MapQuest example 2 参照)
  */
 layer = 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: source
 });
 map = new ol.Map({
  layers: [layer],
  target: divId,
  view: new ol.View({
// center: [0, 0],
   center: [15520720, 4257706], // 東京の座標
// zoom: 2
   zoom: 9
  })
 });
 zoomslider = new ol.control.ZoomSlider();
 /** ol.control.ZoomSlider 
  * A slider type of control for zooming.
  * ズームのためのスライダタイプのコントロール。
  * (ol3 API)
  */
 map.addControl(zoomslider);
 /** addControl(control)
  * Add the given control to the map.
  * 指定したコントロールをマップに追加します。
  * (ol3 API)
  */
 return map;
};
var map1 = createMap('map1');
var map2 = createMap('map2');
var map3 = createMap('map3');

2 - ol3ex 14a - ZoomSlider control 1

「ZoomSlider control(zoomslider.html)」を参考に地図を表示してみます。
HTML ファイルの作成
a Eclipse のメニューの「ファイル」->「ファイルを開く」をクリックします。





b 「ファイルを開く」ウィンドウで、「user」->「mapsite」->「ol3proj」->「v3.0.0」->「examples」->「zoomslider.html」をクリックして選択し、「OK」ボタンをクリックします。
同じように「zoomslider.js」を開きます。





c メニューの「ファイル」->「新規」 -> 「ファイル」をクリックします。




d 「ファイル」ウィンドウで「ol3proj」をクリックして選択し、「ファイル名」を「214-ol3ex.html」と入力し、「次へ」ボタンをクリックします。








e 「File Template」ウィンドウで「HTML 5 Template」をクリックして選択し、「OK」ボタンをクリックします。











f 「zoomslider.html」の内容をコピーして「214-ol3ex.html」に貼り付け、修正します。
g 同じように、新規に「214-ol3ex.js」ファイルを作成し、「File Template」ウィンドウで「JavaScript Template」をクリックして選択し、「完了」ボタンをクリックして、「zoomslider.js」の内容をコピーして貼り付け、修正します。「zoomslider-require.js」も「214-ol3ex-require.js」に貼り付けます。


「214-ol3ex.html」
<!doctype html>
<html lang="en">
 <head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="chrome=1">
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<!--
  <link rel="stylesheet" href="../css/ol.css" type="text/css">
  <link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
  <link rel="stylesheet" href="../resources/layout.css" type="text/css">
  <link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
-->
  <!-- ディレクトリ修正 -->
  <link rel="stylesheet" href="v3.0.0/css/ol.css" type="text/css">
  <link rel="stylesheet" href="v3.0.0/resources/bootstrap/css/bootstrap.min.css" type="text/css">
  <link rel="stylesheet" href="v3.0.0/resources/layout.css" type="text/css">
  <link rel="stylesheet" href="v3.0.0/resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
  <style type="text/css">
/**
 * The zoomslider in the second map shall be placed 
 * between the zoom-in and zoom-out buttons.
 * 2番めのマップのズームスライダは、
 * ズームインとズームアウトボタンの間に置かれます。
 */
#map2 .ol-zoom .ol-zoom-out {
  margin-top: 202px;
}
#map2 .ol-zoomslider {
  background-color: transparent;
  top: 2.3em;
}
/* タッチパネル用 */
#map2 .ol-touch .ol-zoom .ol-zoom-out { 
  margin-top: 212px;
}
#map2 .ol-touch .ol-zoomslider {
  top: 2.75em;
}

/**
 * The zoomslider in the third map shall be horizontal, 
 * placed in the top-right corner, smaller and orange.
 * 3番目のマップのズームスライダは、
 * 右上角に小さめのオレンジ色で垂直に置かれています。
 */
#map3 .ol-zoomslider {
  top: 8px;
  left: auto;
  right: 8px;
  background-color: rgba(255,69,0,0.2);
  width: 200px;
  height: 15px;
  padding: 0;
  box-shadow: 0 0 5px rgb(255,69,0);
  border-radius: 20px;
}

#map3 .ol-zoomslider:hover {
  background-color: rgba(255,69,0,0.3);
}

#map3 .ol-zoomslider-thumb {
  height: 15px;
  width: 15px;
  margin: 0;
  filter: none;
  background-color: rgba(255,69,0,0.6);
  border-radius: 20px;
}
#map3 a.ol-zoomslider-handle:hover {
  background-color: rgba(255,69,0,0.7);
}
  </style>
  <title>ol3 ZoomSlider demo</title>
 </head>
 <body>

  <div class="navbar navbar-inverse navbar-fixed-top">
   <div class="navbar-inner">
    <div class="container">
<!--
     <a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
-->
      <!-- ディレクトリ修正 -->
     <a class="brand" href="v3.0.0/examples/"><img src="v3.0.0/resources/logo.png"> OpenLayers 3 Examples</a>
    </div>
   </div>
  </div>
  <div class="container-fluid">
   <div class="row-fluid">
    <div class="span4">
     <h4>Default style</h4>
     <div id="map1" class="map"></div>
    </div>
    <div class="span4">
     <h4>Placed between zoom controls</h4>
     <div id="map2" class="map"></div>
    </div>
    <div class="span4">
     <h4>Horizontal and completely re-styled</h4>
     <div id="map3" class="map"></div>
    </div>
   </div>
   <div class="row-fluid">
    <div class="span12">
     <h4 id="title">ZoomSlider control</h4>
     <p id="shortdesc">Example of various ZoomSlider controls.</p>
     <div id="docs">
<!--
      <p>See the <a href="zoomslider.js" target="_blank">zoomslider.js source</a> to see how this is done.</p>
-->
       <!-- ファイル修正 -->
      <p>See the <a href="214-ol3ex.js" target="_blank">214-ol3ex.js source</a> to see how this is done.</p>
     </div>
     <div id="tags">zoom, zoomslider, slider, style, styling, css, control</div>
    </div>
   </div>
  </div>
<!--
  <script src="jquery.min.js" type="text/javascript"></script>
  <script src="../resources/example-behaviour.js" type="text/javascript"></script>
-->
  <!-- ディレクトリ修正 -->
  <script src="v3.0.0/examples/jquery.min.js" type="text/javascript"></script>
  <script src="v3.0.0/resources/example-behaviour.js" type="text/javascript"></script>
<!--
  <script src="loader.js?id=zoomslider" type="text/javascript"></script>
-->
  <!-- ファイル修正 -->  <!-- ディレクトリ修正 -->
  <script src="loader.js?id=214-ol3ex" type="text/javascript"></script>

 </body>
</html>

2014年7月24日木曜日

2 - ol3-beta.5ex 15b - ZoomSlider control 2

「zoomslider.js(215-ol3ex.js)」は、地図を表示するのに必要な javascript です。

「215-ol3ex.js」
/**
 * Helper method for map-creation.
 *
 * @param {string} divId The id of the div for the map.
 * divId は map の div 要素の id
 * @return {ol.Map} The ol.Map instance.
 */
var createMap = function(divId) {
 var source, layer, map, zoomslider, resolutions;

 source = new ol.source.MapQuest({layer: 'sat'});
 layer = new ol.layer.Tile({
  source: source
 });
 map = new ol.Map({
  layers: [layer],
  target: divId,
  view: new ol.View2D({
// center: [0, 0],
   center: [15520720, 4257706], // 東京の座標
// zoom: 2
   zoom: 9
  })
 });
 zoomslider = new ol.control.ZoomSlider();
 map.addControl(zoomslider);
 return map;
};
var map1 = createMap('map1');
var map2 = createMap('map2');
var map3 = createMap('map3');

2 - ol3-beta.5ex 15a - ZoomSlider control 1

「ZoomSlider control(zoomslider.html)」を参考に地図を表示してみます。

HTML ファイルの作成
a Eclipse のメニューの「ファイル」->「ファイルを開く」をクリックします。





b 「ファイルを開く」ウィンドウで、「user」->「mapsite」->「ol3proj」->「v3.0.0-beta.5」->「examples」->「zoomslider.html」をクリックして選択し、「OK」ボタンをクリックします。
同じように「zoomslider.js」を開きます。





c メニューの「ファイル」->「新規」 -> 「ファイル」をクリックします。




d 「ファイル」ウィンドウで「ol3proj」をクリックして選択し、「ファイル名」を「215-ol3ex.html」と入力し、「次へ」ボタンをクリックします。








e 「File Template」ウィンドウで「HTML 5 Template」をクリックして選択し、「OK」ボタンをクリックします。











f 「zoomslider.html」の内容をコピーして「215-ol3ex.html」に貼り付け、修正します。
g 同じように、新規に「215-ol3ex.js」ファイルを作成し、「File Template」ウィンドウで「JavaScript Template」をクリックして選択し、「完了」ボタンをクリックして、「zoomslider.js」の内容をコピーして貼り付け、修正します。「zoomslider-require.js」も「215-ol3ex-require.js」に貼り付けます。


「215-ol3ex.html」
<!doctype html>
<html lang="en">
 <head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="chrome=1">
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<!--
  <link rel="stylesheet" href="../css/ol.css" type="text/css">
  <link rel="stylesheet" href="../resources/bootstrap/css/bootstrap.min.css" type="text/css">
  <link rel="stylesheet" href="../resources/layout.css" type="text/css">
  <link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
-->
  <!-- ディレクトリ修正 -->
  <link rel="stylesheet" href="v3.0.0-beta.5/css/ol.css" type="text/css">
  <link rel="stylesheet" href="v3.0.0-beta.5/resources/bootstrap/css/bootstrap.min.css" type="text/css">
  <link rel="stylesheet" href="v3.0.0-beta.5/resources/layout.css" type="text/css">
  <link rel="stylesheet" href="v3.0.0-beta.5/resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
  <style type="text/css">
/**
 * The zoomslider in the second map shall be placed 
 * between the zoom-in andzoom-out buttons.
 */
#map2 .ol-zoom .ol-zoom-out {
  margin-top: 202px;
}
#map2 .ol-zoomslider {
  background-color: transparent;
  top: 2.3em;
}
/* タッチパネル用 */
#map2 .ol-touch .ol-zoom .ol-zoom-out { 
  margin-top: 212px;
}
#map2 .ol-touch .ol-zoomslider {
  top: 2.75em;
}

/**
 * The zoomslider in the third map shall be horizontal, 
 * placed in the top-right corner, smaller and orange.
 */
#map3 .ol-zoomslider {
  top: 8px;
  left: auto;
  right: 8px;
  background-color: rgba(255,69,0,0.2);
  width: 200px;
  height: 15px;
  padding: 0;
  box-shadow: 0 0 5px rgb(255,69,0);
  border-radius: 20px;
}

#map3 .ol-zoomslider:hover {
  background-color: rgba(255,69,0,0.3);
}

#map3 .ol-zoomslider-thumb {
  height: 15px;
  width: 15px;
  margin: 0;
  filter: none;
  background-color: rgba(255,69,0,0.6);
  border-radius: 20px;
}
#map3 a.ol-zoomslider-handle:hover {
  background-color: rgba(255,69,0,0.7);
}
  </style>
  <title>ol3 ZoomSlider demo</title>
 </head>
 <body>

  <div class="navbar navbar-inverse navbar-fixed-top">
   <div class="navbar-inner">
    <div class="container">
<!--
     <a class="brand" href="./"><img src="../resources/logo.png"> OpenLayers 3 Examples</a>
-->
      <!-- ディレクトリ修正 -->
     <a class="brand" href="v3.0.0-beta.5/examples/"><img src="v3.0.0-beta.5/resources/logo.png"> OpenLayers 3 Examples</a>
    </div>
   </div>
  </div>
  <div class="container-fluid">
   <div class="row-fluid">
    <div class="span4">
     <h4>Default style</h4>
     <div id="map1" class="map"></div>
    </div>
    <div class="span4">
     <h4>Placed between zoom controls</h4>
     <div id="map2" class="map"></div>
    </div>
    <div class="span4">
     <h4>Horizontal and completely re-styled</h4>
     <div id="map3" class="map"></div>
    </div>
   </div>
   <div class="row-fluid">
    <div class="span12">
     <h4 id="title">ZoomSlider control</h4>
     <p id="shortdesc">Example of various ZoomSlider controls.</p>
     <div id="docs">
<!--
      <p>See the <a href="zoomslider.js" target="_blank">zoomslider.js source</a> to see how this is done.</p>
-->
       <!-- ファイル修正 -->
      <p>See the <a href="215-ol3ex.js" target="_blank">215-ol3ex.js source</a> to see how this is done.</p>
     </div>
     <div id="tags">zoom, zoomslider, slider, style, styling, css, control</div>
    </div>
   </div>
  </div>
<!--
  <script src="jquery.min.js" type="text/javascript"></script>
  <script src="../resources/example-behaviour.js" type="text/javascript"></script>
-->
  <!-- ディレクトリ修正 -->
  <script src="v3.0.0-beta.5/examples/jquery.min.js" type="text/javascript"></script>
  <script src="v3.0.0-beta.5/resources/example-behaviour.js" type="text/javascript"></script>
<!--
  <script src="loader.js?id=zoomslider" type="text/javascript"></script>
-->
  <!-- ファイル修正 -->  <!-- ディレクトリ修正 -->
  <script src="loader.js?id=215-ol3ex" type="text/javascript"></script>

 </body>
</html>

2010年12月8日水曜日

GeoExt20 GeoExt.ZoomSlider

GeoExt.ZoomSlider

Example サイト
http://www.geoext.org/examples.html

「Zoom Slider」リンクをクリックすると GeoExt.ZoomSlider が表示されます。
zoomslider.js. を参考にします。

説明を意訳すると、Ext.Slider を使用してマップスケールの制御をする方法を示します。

var panel, slider;

Ext.onReady(function() {

// create a map panel with an embedded slider
// 東京都用マップ設定
var map = new OpenLayers.Map('map', {
controls: [
// new OpenLayers.Control.PanZoom(),
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.MousePosition(),
new OpenLayers.Control.ScaleLine()
],
projection: new OpenLayers.Projection("EPSG:2456"),
maxResolution: 'auto',
maxExtent: new OpenLayers.Bounds(-279000,1054000,-185000,1104000),
minResolution: 'auto',
minExtent: new OpenLayers.Bounds(-27900,105400,-18500,110400),
units: 'meters',
displayProjection: new OpenLayers.Projection("EPSG:4326")
});


panel = new GeoExt.MapPanel({
title: "Map",
renderTo: "map-container",
height: 300,
width: 400,
/*
map: {
controls: [new OpenLayers.Control.Navigation()]
},
*/
map: map,
/*
layers: [new OpenLayers.Layer.WMS(
"Global Imagery",
"http://maps.opengeo.org/geowebcache/service/wms",
{layers: "bluemarble"}
)],
extent: [-5, 35, 15, 55],
*/
layers: [
new OpenLayers.Layer.WMS( "Tokyo Height WMS",
"http://192.168.1.6/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_bmi_pgis_img2.map',
layers: 'height',
format: 'image/png'
}),
new OpenLayers.Layer.WMS( "Tokyo Kukaku Sen WMS",
"http://192.168.1.6/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_bmi_pgis_img2.map',
layers: 'kukaku',
transparent: true,
format: 'image/png'
})
],
items: [{
xtype: "gx_zoomslider",
vertical: true,
height: 100,
x: 10,
y: 20,
plugins: new GeoExt.ZoomSliderTip()
}]
});


// create a separate slider bound to the map but displayed elsewhere
slider = new GeoExt.ZoomSlider({
map: panel.map,
aggressive: true,
width: 200,
plugins: new GeoExt.ZoomSliderTip({
template: "<div>Zoom Level: {zoom}</div>"
}),
renderTo: document.body
});

});


HTML ファイルを新規作成します。
「openlayersTokyoproj」 を右クリックして 新規 -> HTML ファイル をクリック。
「HTML ファイル」ウィンドウの「ファイル名(任意:geoext20_zoomslider.html)」に入力して「完了」ボタンをクリック。
「charset」を「utf-8」にします。
以下のように HTML を作成します。
geoext19_zoom-chooser.html をコピーし、外部 JavaScript 読み込みファイルを修正し body タグ内にターゲット id を設定します。

---
<title>GeoExt20 Zoom Slider</title>
---
<!-- zoomslider.js 追加 -->
<script type="text/javascript" src="./zoomslider.js"></script>

</head>
<body>
<h1 id="title">GeoExt 20 - Zoom Slider</h1>
<p id="shortdesc">
GeoExt.ZoomSlider
</p>
<p>The ZoomSlider allows control of the map scale using an Ext.Slider.
It is also possible to add a special tooltip plugin, ZoomSliderTip,
which will show the zoom level, scale and resolution while dragging
the slider (the content is configurable).</p>

<p>ZoomSlider は Ext.Slider を使用してマップスケールの制御をすることができます。
スライダをドラッグしながらレベル、スケールと解像度を表示(内容は変更可能)する、
特殊なツールチッププラグイン ZoomSliderTip を追加することも可能です。</p>

<div id="map-container"></div>

</body>
</html>



倍率が自動的に10段階になり高倍率になると拡大しすぎるので、最小範囲を設定してみました。
最小範囲を最大範囲の10分の1にしてみましたが、倍率は3段階になりました。