[OSGeoJapan-discuss] MapServerとOpenLayersのWMSの初期化時の拡大図
ASAHI Kosuke
asahi @ hcc.co.jp
2012年 5月 31日 (木) 20:50:41 PDT
奈良崎様
朝日です。
scaleで指定する単位が違うような気がします。
この辺りのサンプルソースを元にzoomイベント発生時の各種値を確認してみるな
んてどうでしょう?
http://openlayers.org/dev/examples/events.html
一部しか書きませんが、こんな感じとか。
実際に動かしてないので、動かなかったらゴメンナサイ。
<script type="text/javascript">
function init(){
// イベント発生時に実行されるfunction
function mapEvent(event) {
//サンプルのように何処かに書きだすようにするか、alertとかで値表示
するようにしてしまう
alert(map.getScale()); //mapに設定されているscaleを確認する
alert(map.getResolution()); //mapに設定されている解像度を確認する
}
map = new OpenLayers.Map('map', {
//zoomの際に呼ばれるようにする
eventListeners: {
"zoomend": mapEvent
}
});
}
</script>
(2012/05/30 12:10), 奈良崎 優 wrote:
> 皆様
> 申し訳ありません。
> OpenLayersのzoomToScaleで、次のとおり設定すると、東京スカイツリーの押上1丁目付近の拡大図が得られました。
> head 内の function init() の最後の map.addControl の次に、QGISから読んだスケール1000(m)を次のように追加。
> map.zoomToScale(1000);
> また、mapcenterの値を
> var lon = 139.7245;
> var lat = 35.6816;
> に変更。
> ただし、スケールバーが無く、本当に1000mになっているのかわからないので、
> 次のサイト(presented at FOSS4G 2011)を参考にしてscaleline(=スケールバー)を追加しました。
> http://workshops.opengeo.org/openlayers-intro/controls/scaleline.html
> このscalelineから読むと、横=4000mぐらいありそうです。
> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
> (質問)正確に1000mとするにはどうすればよいのでしょうか?
> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
> 以下は、上の時のOpenLayersのソースです。
> <html xmlns="http://www.w3.org/1999/xhtml">
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
> <link rel="stylesheet" href="style.css" type="text/css" />
> <style type="text/css">
> #map {
> width: 800px;
> height: 500px;
> border: 1px solid black;
> }
> </style>
> <script src="OpenLayers.js"></script>
> <script type="text/javascript">
> var lon = 139.81486;
> var lat = 35.70971;
> var zoom = 11;
> var map, layer;
> var scaleline;
> function init(){
> map = new OpenLayers.Map( 'map' );
>
> localWMS = new OpenLayers.Layer.WMS( "Local WMS layers",
> "http://127.0.0.1/cgi-bin/mapserv.exe?MAP=C:/MS4W/apps/mapserver-tutorial/example12/example_initpos.map",
> {layers: 'mapserver_tutorial_wms_server', transparent: true}, {isBaseLayer: true} );
> map.addLayer(localWMS);
> scaleline = new OpenLayers.Control.ScaleLine();
> map.addControl(scaleline);
>
> map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
> map.addControl( new OpenLayers.Control.LayerSwitcher() );
> map.zoomToScale(1000);
>
> }
> </script>
> </head>
> <body onload="init()">
> <h1 id="title">OpenLayers Example</h1>
>
> <div id="tags">
> </div>
> <p id="shortdesc">
> Shows the basic use of OpenLayers with our local WMS layers and a GeoGrid WMS layer.
> </p>
>
> <div id="map" class="smallmap"></div>
>
> <div id="docs">
> OpenLayers is a JavaScript file (OpenLayers.js) that can be easily included in any HTML file.<br>Click on the source
> below to see the few lines required to add these 2 WMS servers into the map.<br>
> <br>
> <hr noshade width="40%" size="1" align="left">
> <a href="/mapserver-tutorial/example14/openlayers_source.html">- (source) -</a>
> <a href="/mapserver-tutorial/index.html">- (back) -</a>
> </div>
> </body>
> </html>
> 奈良崎
>
> 奈良崎 優 さんは書きました:
>> 皆様
>> OSGeo4WのMapServerの例題をverion=6.0で色々変更してWeb-GISの勉強しています。
>> 例題14は、東京のMapServerとOpenLayersのWMSの例題です。
>> 初期化時に、東京スカイツリーのある押上1丁目付近の拡大図を表示させ、次第に表示エリアを拡張したいと思い、
>> mapファイルのEXTENTの値を次のとおり変更しました。
>> (この値は、QGISで読みました。)
>> min max min max
>> (139.72520,35.67139),(139.78845,35.7073)−>(139.7944,35.68858),(139.84025,35.72974)
>> しかし、何の変化もありません。
>> OpenLayersのzoomToExtentで制御するのでしょうか?
>> もしそうなら、わかりやすい例題を紹介していただけないでしょうか?
>> (APIの説明だけだと初心者にはわかりづらいのでexampleがついたものがいいです。)
>> 以下に、使用したMapファイルとOpenlayersのhtmlファイルを示します。
>> (ほぼ、OSGeo4Wの例題14と同じで、相違点は、v=6.0にしたためです。)
>> よろしくお願いします。
>> 奈良崎
>> 1.Mapファイル
>> MAP
>> NAME "mapserver_tutorial_wms_server"
>> IMAGETYPE PNG
>> EXTENT 139.7944 35.68858 139.84025 35.72974
>> #EXTENT 139.72520 35.67139 139.78845 35.7073
>> SIZE 550 450
>>
>> IMAGECOLOR 255 255 255
>> SHAPEPATH "../data"
>>
>> FONTSET ../fonts/fonts.txt
>>
>> UNITS dd
>>
>> WEB
>> TEMPLATE 'example_template.html'
>> IMAGEPATH "C:\MS4W/tmp/ms_tmp/"
>> IMAGEURL "/ms_tmp/"
>> #MINSCALEDENOM 100
>> MINSCALEDENOM 1000
>> #MAXSCALEDENOM 70000
>> MAXSCALEDENOM 700000
>> METADATA
>> "wms_title" "MapServer Tutorial WMS Server"
>> "wms_onlineresource" "http://127.0.0.1/cgi-bin/mapserv.exe?MAP=C:\MS4W/apps/mapserver-tutorial/example12/example_initpos.map"
>> "wms_srs" "EPSG:4301 EPSG:4269 EPSG:4326"
>> "wms_abstract" "This demonstration server shows how to setup a MapServer .map file to serve data through the WMS standard."
>> wms_enable_request "*"
>> END
>> #"wms_enable_request" "*"
>> END
>>
>> PROJECTION
>> "init=epsg:4301"
>> END
>>
>> LAYER
>> NAME "roads"
>> METADATA
>> "wms_title" "Roads"
>> END
>> DATA dourokukan
>> STATUS ON
>> TYPE LINE
>> MAXSCALEDENOM 50000
>> CLASS
>> NAME "roads"
>> STYLE
>> COLOR 187 187 127
>> END
>> END
>> PROJECTION
>> "init=epsg:4301"
>> END
>> END
>>
>> LAYER
>> NAME "administrative"
>> METADATA
>> "wms_title" "Administrative"
>> END
>> DATA gyouseikai
>> STATUS ON
>> TYPE LINE
>> CLASS
>> NAME "Administrative"
>> STYLE
>> COLOR 227 127 227
>> END
>> END
>> PROJECTION
>> "init=epsg:4301"
>> END
>> END
>>
>> LAYER
>> NAME "rail"
>> METADATA
>> "wms_title" "Rail"
>> END
>> DATA tetsudokukan
>> STATUS ON
>> TYPE LINE
>> CLASS
>> NAME "Rail"
>> STYLE
>> COLOR 128 128 128
>> END
>> END
>> PROJECTION
>> "init=epsg:4301"
>> END
>> END
>>
>> LAYER
>> NAME "rivers"
>> METADATA
>> "wms_title" "Rivers"
>> END
>> DATA kasenkukan
>> STATUS ON
>> TYPE LINE
>> CLASS
>> NAME "Rivers"
>> STYLE
>> COLOR 0 255 255
>> END
>> END
>> PROJECTION
>> "init=epsg:4301"
>> END
>> END
>>
>> LAYER
>> NAME "water"
>> METADATA
>> "wms_title" "Water"
>> END
>> DATA suiikikai
>> STATUS ON
>> TYPE LINE
>> CLASS
>> NAME "Water"
>> STYLE
>> COLOR 0 0 255
>> END
>> END
>> PROJECTION
>> "init=epsg:4301"
>> END
>> END
>>
>> LAYER
>> NAME "places"
>> METADATA
>> "wms_title" "Place name"
>> END
>> DATA chimei
>> STATUS ON
>> TYPE POINT
>> LABELITEM "NAMAE"
>> CLASS
>> NAME "Places"
>> STYLE
>> COLOR 10 100 100
>> END
>> LABEL
>> TYPE TRUETYPE
>> FONT pgothic
>> COLOR 220 20 20
>> SIZE 7
>> POSITION CL
>> PARTIALS FALSE
>> BUFFER 5
>> ENCODING "SHIFT_JIS"
>> END
>> END
>> PROJECTION
>> "init=epsg:4301"
>> END
>> END
>>
>> END
>>
>> 2.Openlayersのhtmlファイル
>> <html xmlns="http://www.w3.org/1999/xhtml">
>> <head>
>> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
>> <link rel="stylesheet" href="style.css" type="text/css" />
>> <style type="text/css">
>> #map {
>> width: 800px;
>> height: 500px;
>> border: 1px solid black;
>> }
>> </style>
>> <script src="OpenLayers.js"></script>
>> <script type="text/javascript">
>> var lon = 139.7245;
>> var lat = 35.6816;
>> var zoom = 11;
>> var map, layer;
>>
>> function init(){
>> map = new OpenLayers.Map( 'map' );
>>
>> localWMS = new OpenLayers.Layer.WMS( "Local WMS layers",
>> "http://127.0.0.1/cgi-bin/mapserv.exe?MAP=C:/MS4W/apps/mapserver-tutorial/example12/example_initpos.map",
>> {layers: 'mapserver_tutorial_wms_server', transparent: true}, {isBaseLayer: true} );
>> map.addLayer(localWMS);
>>
>> map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
>> map.addControl( new OpenLayers.Control.LayerSwitcher() );
>> }
>> </script>
>> </head>
>> <body onload="init()">
>> <h1 id="title">OpenLayers Example</h1>
>>
>> <div id="tags">
>> </div>
>> <p id="shortdesc">
>> Shows the basic use of OpenLayers with our local WMS layers and a GeoGrid WMS layer.
>> </p>
>>
>> <div id="map" class="smallmap"></div>
>>
>> <div id="docs">
>> OpenLayers is a JavaScript file (OpenLayers.js) that can be easily included in any HTML file.<br>Click on the source
>> below to see the few lines required to add these 2 WMS servers into the map.<br>
>> <br>
>> <hr noshade width="40%" size="1" align="left">
>> <a href="/mapserver-tutorial/example14/openlayers_source.html">- (source) -</a>
>> <a href="/mapserver-tutorial/index.html">- (back) -</a>
>> </div>
>> </body>
>> </html>
>>
>> ********************************************************************************
>> 〒247-8505
>> 鎌倉市上町屋345番地
>> 三菱プレシジョン株式会社
>> 生産管理部
>> 奈良崎 優 Narazaki Masaru
>> Tel 0467-42-5547
>> e-mail:mnarazaki @ mpcnet.co.jp
>> ********************************************************************************
>>
>> ______________________________________________________________________
>>
>> _______________________________________________
>> OSGeoJapan-discuss mailing list
>> OSGeoJapan-discuss @ lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
> _______________________________________________
> OSGeoJapan-discuss mailing list
> OSGeoJapan-discuss @ lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>
>
--
北海道地図株式会社 研究開発課
朝日 孝輔
mailto:asahi @ hcc.co.jp
Tel : 0166-62-4711
More information about the OSGeoJapan-discuss
mailing list