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

2015年2月12日木曜日

2 - ol3.2ex 58b - Custom styles for polygons 2

「polygon-styles.js(258-ol3ex.js)」は、マップを表示するための JavaScript ファイルです。

「258-ol3ex.js」
var styles = [
  /* We are using two different styles for the polygons:
   *  - The first style is for the polygons themselves.
   *  - The second style is to draw the vertices of the 
   *    polygons.
   *    In a custom `geometry` function the vertices of a 
   *    polygon are returned as `MultiPoint` geometry, 
   *    which will be used to render the style.
   * 私たちは、ポリゴンのための二つの異なるスタイルを使用していま
   * す:
   * - 最初のスタイルは、ポリゴン自身のためのものです。
   * - 第二のスタイルは、ポリゴンの頂点を描画するためです。
   * `geometry`カスタムファンクションでは、ポリゴンの頂点は、ス
   * タイルを描画するために使用される`MultiPoint`ジオメトリとし
   * て返されます。
   */
 new ol.style.Style({
  /** ol.style.Style 
   * Base class for vector feature rendering styles.
   * ベクタフィーチャがスタイルを描画するための基本クラス。
   * (ol3 API)
   */
  stroke: new ol.style.Stroke({
  /** ol.style.Stroke 
   * Set stroke style for vector features. 
   * Note that the defaults given are the Canvas defaults, 
   * which will be used if option is not defined. 
   * The get functions return whatever was entered 
   * in the options;  they will not return the default.
   * ベクタフィーチャのためのストロークスタイルの設定。
   * デフォルトは、オプションが定義されていない場合に使用される
   * Canvas のデフォルトを与えられることに注意してください。 
   * GET関数は、オプションで入力されたものはすべて返します。
   * それらはデフォルトを返しません。(ol3 API)
   */
   color: 'blue',
   width: 3
  }),
  fill: new ol.style.Fill({
  /** ol.style.Fill 
   * Set fill style for vector features.
   * ベクタフィーチャの塗りつぶしスタイルを設定。(ol3 API)
   */
   color: 'rgba(0, 0, 255, 0.1)'
  })
 }),
 new ol.style.Style({
  image: new ol.style.Circle({
  /** ol.style.Circle
   * Set circle style for vector features.
   * ベクタフィーチャの円のスタイルを設定。(ol3 API)
   */
   radius: 5,
   fill: new ol.style.Fill({
    color: 'orange'
   })
  }),
  geometry: function(feature) {
  // return the coordinates of the first ring of the polygon
  // ポリゴンの最初のリングの座標を返します。
   var coordinates = feature.getGeometry().getCoordinates()[0];
   /** getGeometry()
    *  Returns the Geometry associated with this feature 
    * using the current geometry name property. By default, 
    * this is geometry but it may be changed by calling 
    * setGeometryName.
    * 現在のジオメトリネームプロパティを使用して、このフィーチャに
    * 関連したジオメトリを返します。デフォルトでは、ジオメトリです
    * が、setGeometryName を呼び出すことによって変更することがで
    * きます。(ol3 API)
    */
   /** getCoordinates()
    * Returns: Coordinates.(ol3 API)
    */
    return new ol.geom.MultiPoint(coordinates);
    /** ol.geom.MultiPoint 
     * Multi-point geometry.(ol3 API)
     */
  }
 })
];
var source = new ol.source.GeoJSON(/** @type {olx.source.GeoJSONOptions} */ ({
  /** ol.source.GeoJSON 
   * Static vector source in GeoJSON format
   * GeoJSON フォーマットの静的ベクタソース。(ol3 API)
   */
/** @type 
 * 値のタイプ(型)の説明 - 式などで表示
 * (@use JSDoc[http://usejsdoc.org/]より)
 */
 object: {
  'type': 'FeatureCollection',
  'crs': {
   'type': 'name',
   'properties': {
    'name': 'EPSG:3857'
   }
  },
  'features': [
   {
    'type': 'Feature',
    'geometry': {
     'type': 'Polygon',
     'coordinates': [[[-5e6, 6e6], [-5e6, 8e6], [-3e6, 8e6],
      [-3e6, 6e6], [-5e6, 6e6]]]
    }
   },
   {
    'type': 'Feature',
    'geometry': {
     'type': 'Polygon',
     'coordinates': [[[-2e6, 6e6], [-2e6, 8e6], [0, 8e6],
      [0, 6e6], [-2e6, 6e6]]]
    }
   },
   {
    'type': 'Feature',
    'geometry': {
     'type': 'Polygon',
     'coordinates': [[[1e6, 6e6], [1e6, 8e6], [3e6, 8e6],
      [3e6, 6e6], [1e6, 6e6]]]
    }
   },
   {
    'type': 'Feature',
    'geometry': {
     'type': 'Polygon',
     'coordinates': [[[-2e6, -1e6], [-1e6, 1e6],
      [0, -1e6], [-2e6, -1e6]]]
    }
   }
  ]
 }
}));
var layer = new ol.layer.Vector({
/** ol.layer.Vector
 * Vector data that is rendered client-side.
 * クライアント側で描画されたベクタデータ。(ol3 API)
 */
 source: source,
 style: styles
});
var map = new ol.Map({
 layers: [layer],
 target: 'map',
 view: new ol.View({
  center: [0, 1000000],
  zoom: 2
 })
});

2 - ol3.2ex 58a - Custom styles for polygons 1

「Custom styles for polygons(polygon-styles.html)」を参考に地図を表示してみます。


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





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





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



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








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











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


「258-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.2.0/css/ol.css" type="text/css">
  <link rel="stylesheet" href="v3.2.0/resources/bootstrap/css/bootstrap.min.css" type="text/css">
  <link rel="stylesheet" href="v3.2.0/resources/layout.css" type="text/css">
  <link rel="stylesheet" href="v3.2.0/resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
  <title>Custom styles for polygons</title>
  <style>
   .map {
    background: grey;
   }
  </style>
 </head>
 <body>
  <!-- 
  bootstrap.min.css, bootstrap-responsive.min.css で設定されたセレクタを使用。
  -->
  <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.2.0/examples/"><img src="v3.2.0/resources/logo.png"> OpenLayers 3 Examples</a>
    </div>
   </div>
  </div>
  <div class="container-fluid">
   <div class="row-fluid">
    <div class="span12">
     <div id="map" class="map"></div>
    </div>
   </div>
   <div class="row-fluid">
    <div class="span12">
     <h4 id="title">Custom styles for polygons</h4>
     <p id="shortdesc">Showing the vertices of a polygon 
      with a custom style geometry.</p>
     <div id="docs">
      <!--
      See the <a href="polygon-styles.js" target="_blank">polygon-styles.js source</a> to see how this is done.</p>
      -->
      <!-- ファイル修正 -->
      See the <a href="258-ol3ex.js" target="_blank">258-ol3ex.js source</a> to see how this is done.</p>
     </div>
     <div id="tags">polygon, vector, style, GeometryFunction</div>
    </div>
   </div>
  </div>
  <!--
  <script src="../resources/jquery.min.js" type="text/javascript"></script>
  <script src="../resources/example-behaviour.js" type="text/javascript"></script>
  -->
  <!-- ディレクトリ修正
   jQuery Minified版と
   example-behaviour.js(Examples用 JSコード[文字コードなど])
  -->
  <script src="v3.2.0/resources/jquery.min.js" type="text/javascript"></script>
  <script src="v3.2.0/resources/example-behaviour.js" type="text/javascript"></script>
  <!--
  <script src="loader.js?id=polygon-styles" type="text/javascript"></script>
  -->
  <!-- ファイル修正 -->  <!-- ディレクトリ修正 -->
  <script src="loader.js?id=258-ol3ex" type="text/javascript"></script>
 </body>
</html>

2014年2月20日木曜日

36 - GeoEXT を使用した WFS-T 2 - レイヤのスタイルの修正

36-2 GeoServer のレイヤの スタイルの修正
GeoServer のレイヤのスタイルを修正して名称などを表示します。

tokyo_kuiki と akiruno_kukaku レイヤのスタイルの SLD(Styled Layer Descriptor)ファイルを作成します。

kuiki.sld
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
 <NamedLayer>
 <Name>kuiki green</Name>
  <UserStyle>
   <Name>kuiki green</Name>
   <Title>Kuiki green polygon</Title>
   <Abstract>Light green fill with grey outline</Abstract>
   <FeatureTypeStyle>
    <Rule>
     <PolygonSymbolizer>
       <!-- 面の色 -->
      <Fill>
       <CssParameter name="fill">#CCFFCC</CssParameter>
       <CssParameter name="fill-opacity">0.5</CssParameter>
      </Fill>
       <!-- 縁の色 -->
      <Stroke>
       <CssParameter name="strok">#999999</CssParameter>
       <CssParameter name="stroke-width">1</CssParameter>
      </Stroke>
     </PolygonSymbolizer>
     <TextSymbolizer>
    <!-- 名称 -->
      <Label>
       <!-- tokyo_kuiki レイヤの名称の属性 -->
       <ogc:PropertyName>n03_004</ogc:PropertyName>
      </Label>
       <!-- フォント -->
      <Font>
       <CssParameter name="font-size">12</CssParameter>
       <CssParameter name="font-color">#CCCCCC</CssParameter>
      </Font>
     </TextSymbolizer>
    </Rule>
   </FeatureTypeStyle>
  </UserStyle>
 </NamedLayer>
</StyledLayerDescriptor>


kukaku.sld
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
 <NamedLayer>
 <Name>kukaku yellow</Name>
  <UserStyle>
   <Name>kukaku yellow</Name>
   <Title>Kukaku yellow polygon</Title>
   <Abstract>Light yellow fill with grey outline</Abstract>
   <FeatureTypeStyle>
    <Rule>
     <PolygonSymbolizer>
      <Fill>
       <CssParameter name="fill">#FFFFCC</CssParameter>
       <CssParameter name="fill-opacity">1</CssParameter>
      </Fill>
      <Stroke>
       <CssParameter name="strok">#CCCCCC</CssParameter>
       <CssParameter name="stroke-width">1</CssParameter>
      </Stroke>
     </PolygonSymbolizer>
     <TextSymbolizer>
      <Label>
       <ogc:PropertyName>name</ogc:PropertyName>
      </Label>
      <Font>
       <CssParameter name="font-size">12</CssParameter>
       <CssParameter name="font-color">#CCCCCC</CssParameter>
      </Font>
     </TextSymbolizer>
    </Rule>
   </FeatureTypeStyle>
  </UserStyle>
 </NamedLayer>
</StyledLayerDescriptor>


akiruno_kenchiku レイヤは倍率が高くなったとき表示します。

kenchiku.sld

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
 <NamedLayer>
 <Name>kenchiku green</Name>
  <UserStyle>
   <Name>kenchiku green</Name>
   <Title>Kenchiku green polygon</Title>
   <Abstract>Green fill</Abstract>
   <FeatureTypeStyle>
    <Rule>
      <!-- 表示倍率 -->
     <MinScaleDenominator>500</MinScaleDenominator>
     <MaxScaleDenominator>10000</MaxScaleDenominator>
     <PolygonSymbolizer>
      <Fill>
       <CssParameter name="fill">#99CC99</CssParameter>
       <CssParameter name="fill-opacity">1</CssParameter>
      </Fill>
      <Stroke>
       <CssParameter name="stroke">#336633</CssParameter>
       <CssParameter name="stroke-width">1</CssParameter>
      </Stroke>
     </PolygonSymbolizer>
    </Rule>
   </FeatureTypeStyle>
  </UserStyle>
 </NamedLayer>
</StyledLayerDescriptor>


tokyo_pf レイヤは以前、作成した SLD ファイルを修正します。
倍率が高くなったとき表示して、名称を表示します。

tokyo_pf.sld
---
 <NamedLayer>
  <Name>Simple point</Name>
  <UserStyle>
   <Title>Tokyo Public Facility tokyo_pf: Simple point</Title>

   <FeatureTypeStyle>
    <Rule>
     <Name>Building: lightgreen</Name>
     <ogc:Filter>
      <ogc:PropertyIsEqualTo>
       <ogc:PropertyName>p02_002</ogc:PropertyName>
       <ogc:Literal>3</ogc:Literal>
      </ogc:PropertyIsEqualTo>
     </ogc:Filter>
      <!-- 表示倍率 追加 -->
     <MinScaleDenominator>500</MinScaleDenominator>
     <MaxScaleDenominator>10000</MaxScaleDenominator>
     <PointSymbolizer>
      <Graphic>
       <Mark>
        <WellKnownName>circle</WellKnownName>
        <Fill>
         <CssParameter name="fill">#99ff99</CssParameter>
        </Fill>
        <Stroke>
         <CssParameter name="stroke">#33ff33</CssParameter>
         <CssParameter name="stroke-width">2</CssParameter>
        </Stroke>
       </Mark>
       <Size>10</Size>
      </Graphic>
     </PointSymbolizer>
      <!-- 名称(ラベル) 追加 -->
     <TextSymbolizer>
      <Label>
       <ogc:PropertyName>p02_004</ogc:PropertyName>
      </Label>
      <Font>
       <CssParameter name="font-size">12</CssParameter>
       <CssParameter name="font-color">#CCCCCC</CssParameter>
      </Font>
       <!-- ポイントに対するラベルの位置 -->
      <LabelPlacement>
       <PointPlacement>
         <!-- ポイントとラベルの関わり -->
        <AnchorPoint>
          <!-- 水平方向(ラベルの中央) -->
         <AnchorPointX>0.5</AnchorPointX>
          <!-- 垂直方向(ラベルの底辺) -->
         <AnchorPointY>0.0</AnchorPointY>
        </AnchorPoint>
         <!-- ラベルのオフセット -->
        <Displacement>
          <!-- 水平方向 -->
         <DisplacementX>0</DisplacementX>
          <!-- 垂直方向(5ピクセル上) -->
         <DisplacementY>5</DisplacementY>
        </Displacement>
       </PointPlacement>
      </LabelPlacement>
     </TextSymbolizer>
    </Rule>
   </FeatureTypeStyle>
---

各 <FeatureTypeStyle> に同じ設定をします。

2014年2月8日土曜日

35 - WFS-T(WFS Transaction) 3 - HTML ファイルを作成

35-3 HTML ファイルを作成
HTML ファイルを準備します。

a 「App Exploler」ペインの「ol015-nippon_bmi_akiruno_pgis.html」を右クリックし「コピー」をクリックします。








b 「App Exploler」ペイン上で右クリックし「貼り付け」をクリックします。









c 「名前の競合」ウィンドウで「ol016-nippon_bmi_akiruno_pgis.html」と入力し「OK」ボタンをクリックします。



d 「App Exploler」ペインの「ol016-nippon_bmi_akiruno_pgis.html」をダブルクリックして開きます。
e Development Examples の「WFS Transaction Example(http://openlayers.org/dev/examples/wfs-protocol- transaction.html)」サイトの「wfs-protocol-transactions.js source」リンクをクリックしてコードを表示します。
f 次のように内容の一部をコピーして「ol016-nippon_bmi_akiruno_pgis.html」に貼り付け、修正します。

---
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url="; // 追加

function init(){
---
 var saveStrategy = new OpenLayers.Strategy.Save(); // 追加
// ここから修正
 vectors = new OpenLayers.Layer.Vector("Akiruno Polygon", {
  strategies: [new OpenLayers.Strategy.BBOX(), saveStrategy],
  projection: new OpenLayers.Projection("EPSG:2451"),
  protocol: new OpenLayers.Protocol.WFS({
   version: "1.1.0",
   srsName: "EPSG:2451",
   url: "http://192.168.1.200:8080/geoserver/wfs",
   featureNS :  "http://www.myhome.net/npn",
   featureType: "akiruno_polygon",
   geometryName: "the_geom",
   schema: "http://192.168.1.200:8080/geoserver/wfs/DescribeFeatureType?version=1.1.0&typename=npn:akiruno_polygon"
  })
 }); 
// ここまで
 map = new OpenLayers.Map('map', {
---
 panelControl = [
  new OpenLayers.Control.Navigation(
  {
   title: "Navigation"
  }),
/* ここから削除
  new OpenLayers.Control.DrawFeature(
   vectors,
   OpenLayers.Handler.Point,
   {
    title: "Draw Point",
    displayClass: 'olControlDrawFeaturePoint',
    multi: true
  }),
  new OpenLayers.Control.DrawFeature(
   vectors,
   OpenLayers.Handler.Path,
   {
    title: "Draw Line",
    displayClass: 'olControlDrawFeaturePath',
    multi: true
  }),
ここまで */
  new OpenLayers.Control.DrawFeature(
   vectors,
   OpenLayers.Handler.Polygon,
   {
    title: "Draw Polygon",
    displayClass: 'olControlDrawFeaturePolygon',
    multi: true
  }),
---
// ここから追加
  new OpenLayers.Control.Button({
   title: "Save Changes",
   trigger: function() {
    saveStrategy.save();
   },
   displayClass: "olControlSaveFeatures"
  })
 ];
// ここまで
 panel.addControls(panelControl);
 map.addControl(panel);

 map.zoomToMaxExtent();
}
---


user@debian7-vmw:~$ psql nippon_bmi
psql (9.1.11)
"help" でヘルプを表示します.
nippon_bmi=> \dt
                 リレーションの一覧
 スキーマ |        名前         |    型    | 所有者 
----------+---------------------+----------+--------

 public   | akiruno_polygon     | テーブル | user
(21 行)
(stdin):q
nippon_bmi=> \d akiruno_polygon
                          テーブル "public.akiruno_polygon"
  カラム  |    型    |                        修飾語                         
----------+----------+-------------------------------------------------------
 fid      | integer  | not null default nextval('akiruno_polygon_fid_seq'::regclass)
 the_geom | geometry | 
インデックス:
    "akiruno_polygon_pkey" PRIMARY KEY, btree (fid)
    "spatial_akiruno_polygon_the_geom" gist (the_geom)
CHECK 制約:
    "enforce_dims_the_geom" CHECK (st_ndims(the_geom) = 2)
    "enforce_geotype_the_geom" CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL)
    "enforce_srid_the_geom" CHECK (st_srid(the_geom) = 2451)
(stdin):q
nippon_bmi=> select * from akiruno_polygon;
 fid |                                                                         
             the_geom                                                          
                           
-----+--------------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------------
   1 | 0106000020930900000100000001030000000100000004000000C57FFEFE122FEDC04F000
22C99F3DCC0C57FFEFEAA3DECC04F00022CF783DAC0C57FFEFEBA9CEBC04F00022CE425DDC0C57FF
EFE122FEDC04F00022C99F3DCC0
(1 行)

2014年1月14日火曜日

33 - マウスでフィーチャを描画 6 - 描画途中で戻る(Undo)元に戻す(Redo)

33-6 ポリゴン(多角形)の描画途中で戻る(Undo)元に戻す(Redo)
examples フォルダにある「OpenLayers Undo/Redo Drawing Methods(draw-undo-redo.html)」を参考に マウスで移動してみます。
「ol014-nippon_bmi_akiruno_pgis.html」 ファイルを続けて使います。

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







b 「ファイルを開く」ウィンドウで、「OpenLayers-2.13.1」->「examples」->「draw-undo-redo.html」をクリックして選択し、「OK」ボタンをクリックします。






同じように「draw-undo-redo.js」を開きます。








c 次のように「draw-undo-redo.js」の内容の一部をコピーして「ol014-nippon_bmi_akiruno_pgis.html」に貼り付け、修正します。

---
// ここから追加
  OpenLayers.Event.observe(document, "keydown", function(evt) {
   var handled = false;
   switch (evt.keyCode) {
    case 90: // z
     if (evt.metaKey || evt.ctrlKey) {
//    draw.undo();
      drawControls.polygon.undo(); // "draw" を "drawControls.polygon" に修正
      handled = true;
     }
     break;
    case 89: // y
     if (evt.metaKey || evt.ctrlKey) {
//    draw.redo();
      drawControls.polygon.redo(); // "draw" を "drawControls.polygon" に修正
      handled = true;
     }
     break;
    case 27: // esc
//   draw.cancel();
     drawControls.polygon.cancel(); // "draw" を "drawControls.polygon" に修正
     handled = true;
     break;
   }
   if (handled) {
    OpenLayers.Event.stop(evt);
   }
  });
// ここまで
 </script>
</head>
---


3回クリックしたところで








「Ctrl + z」(Macは「⌘ + z」)キーを押すと、直前の点がキャンセルされる。







「Ctrl + y」(Macは「⌘ + y」)キーを押すと、キャンセルさた点が元に戻る。







「esc」キーを押すと、描画途中のフィーチャがすべて消える。









「33 - マウスでフィーチャを描画」参考 HTML ファイル
ol014-nippon_bmi_akiruno_pgis.html

33 - マウスでフィーチャを描画 5 - ポリゴン(多角形)を削除する

33-5 ポリゴン(多角形)を削除する
「geometricnet」の「OpenLayers Undo Redo Vector Edit Example(http://geometricnet.sourceforge.net/examples/undo-redo.html)」を参考に マウスで削除してみます。
(このサイトを参考に UndoRedo を試してみましたが、動作しませんでした。)
「ol014-nippon_bmi_akiruno_pgis.html」 ファイルを続けて使います。

a 上記サイトを右クリックしてソースを表示します。
b 次のように内容の一部をコピーして「ol014-nippon_bmi_akiruno_pgis.html」に貼り付け、修正します。

---
    modify: new OpenLayers.Control.ModifyFeature(vectors),
    "delete": new DeleteFeature(vectors) // 追加
   };
---
   DeleteFeature = OpenLayers.Class(OpenLayers.Control, {
    initialize: function(layer, options) {
     OpenLayers.Control.prototype.initialize.apply(this, [options]);
      this.layer = layer;
      this.handler = new OpenLayers.Handler.Feature(
       this, layer, {click: this.clickFeature}
     );
    },
    clickFeature: function(feature) {
     // if feature doesn't have a fid, destroy it
     if(feature.fid == undefined) {
      this.layer.destroyFeatures([feature]);
     } else {
      this.layer.drawFeature(feature,{display: "none"});
      this.layer.removeFeatures(feature);
      //feature.state = OpenLayers.State.DELETE;
      this.layer.events.triggerEvent("afterfeaturemodified", {feature: feature});
      //feature.renderIntent = "select";
     }
    },
    setMap: function(map) {
     this.handler.setMap(map);
     OpenLayers.Control.prototype.setMap.apply(this, arguments);
    },
    CLASS_NAME: "OpenLayers.Control.DeleteFeature"
   });
// ここまで
  </script>
 </head>
 <body onload="init()">
---
<!-- ここから追加 -->
   <li>
    <input id="deleteToggle" type="radio" name="type" value="delete" onlick="toggleControl(this);" />
    <label for="polygonToggle">delete feature</label>
   </li>
<!--  ここまで -->
  </ul>
  </div>
 <body>
</html>


クリックしたフィーチャが削除されます。
335a-olaki.png
335b-olaki.png

33 - マウスでフィーチャを描画 4 - ポリゴン(多角形)を変形する

33-4 ポリゴン(多角形)を変形する
examples フォルダにある「OpenLayers Modify Feature Example(modify-feature.html)」を参考に マウスで移動してみます。
「ol014-nippon_bmi_akiruno_pgis.html」 ファイルを続けて使います。

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







b 「ファイルを開く」ウィンドウで、「OpenLayers-2.13.1」->「examples」->「modify-feature.html」をクリックして選択し、「OK」ボタンをクリックします。






c 次のように「modify-feature.html」の内容の一部をコピーして「ol014-nippon_bmi_akiruno_pgis.html」に貼り付け、修正します。
---
  <link rel="stylesheet" href="OpenLayers-2.13.1/theme/default/style.css" type="text/css">
  <link rel="stylesheet" href="OpenLayers-2.13.1/examples/style.css" type="text/css">
  <style type="text/css">
/* ここから追加 */
   #controls {
    width: 512px;
   }
   #controlToggle {
    padding-left: 1em;
   }
/* ここまで */
   #controlToggle li {
    list-style: none;
   }
   p {
    width: 512px;
   }
   /* avoid pink tiles */
   .olImageLoadError {
    background-color: transparent !important;
   }
  </style>
  <title>WMS Example BMI Akiruno PGIS2</title>
---
     map.addLayers([layer0, layer3, layer1, layer2, layer4, vectors]);
// ここから追加
     if (console && console.log) {
      function report(event) {
       console.log(event.type, event.feature ? event.feature.id : event.components);
      }
      vectors.events.on({
       "beforefeaturemodified": report,
       "featuremodified": report,
       "afterfeaturemodified": report,
       "vertexmodified": report,
       "sketchmodified": report,
       "sketchstarted": report,
       "sketchcomplete": report
      });
     }
// ここまで
     drawControls = {
      polygon: new OpenLayers.Control.DrawFeature(
       vectors, OpenLayers.Handler.Polygon),
      drag1: new OpenLayers.Control.DragFeature( // "drag" を "drag1" に修正
       vectors,
       {
        onStart: startDrag,
        onDrag: doDrag,
        onComplete: endDrag
       }
      ),
      modify: new OpenLayers.Control.ModifyFeature(vectors), // 追加
      select: new OpenLayers.Control.SelectFeature(
       vectors,
---
   function update() {
    var clickout = document.getElementById("clickout").checked;
    if(clickout != drawControls.select.clickout) {
     drawControls.select.clickout = clickout;
    }
// ここから追加 "controls" を "drawControls" に修正
    // reset modification mode
    drawControls.modify.mode = OpenLayers.Control.ModifyFeature.RESHAPE;
    var rotate = document.getElementById("rotate").checked;
    if(rotate) {
        drawControls.modify.mode |= OpenLayers.Control.ModifyFeature.ROTATE;
    }
    var resize = document.getElementById("resize").checked;
    if(resize) {
        drawControls.modify.mode |= OpenLayers.Control.ModifyFeature.RESIZE;
        var keepAspectRatio = document.getElementById("keepAspectRatio").checked;
        if (keepAspectRatio) {
            drawControls.modify.mode &= ~OpenLayers.Control.ModifyFeature.RESHAPE;
        }
    }
    var drag = document.getElementById("drag").checked;
    if(drag) {
        drawControls.modify.mode |= OpenLayers.Control.ModifyFeature.DRAG;
    }
    if (rotate || drag) {
        drawControls.modify.mode &= ~OpenLayers.Control.ModifyFeature.RESHAPE;
    }
    drawControls.modify.createVertices = document.getElementById("createVertices").checked;
    var sides = parseInt(document.getElementById("sides").value);
    sides = Math.max(3, isNaN(sides) ? 0 : sides);
    drawControls.regular.handler.sides = sides;
    var irregular =  document.getElementById("irregular").checked;
    drawControls.regular.handler.irregular = irregular;
// ここまで     
   var box = document.getElementById("box").checked;
    if(box != drawControls.select.box) {
     drawControls.select.box = box;
     if(drawControls.select.active) {
      drawControls.select.deactivate();
      drawControls.select.activate();
     }
    }
   }
  </script>
 </head>
 <body onload="init()">
---
  <div id="controls"> <!-- 追加 -->
  <ul id="controlToggle">
---
<!-- "drag" を "drag1" に修正 -->
 <li>
   <input type="radio" name="type" value="drag1" id="dragToggle" onclick="toggleControl(this);" />
   <label for="dragToggle">drag feature</label>
 </li>
---
<!-- ここから追加 -->
  <li>
   <input type="radio" name="type" value="modify" id="modifyToggle" onclick="toggleControl(this);" />
   <label for="modifyToggle">modify feature</label>
   <ul>
    <li>
     <input id="createVertices" type="checkbox" checked name="createVertices" onchange="update()" />
     <label for="createVertices">allow vertices creation</label>
    </li>
    <li>
     <input id="rotate" type="checkbox" name="rotate" onchange="update()" />
     <label for="rotate">allow rotation</label>
    </li>
    <li>
     <input id="resize" type="checkbox" name="resize" onchange="update()" />
     <label for="resize">allow resizing</label>
     (<input id="keepAspectRatio" type="checkbox" name="keepAspectRatio" onchange="update()" checked="checked" />
     <label for="keepAspectRatio">keep aspect ratio</label>)
    </li>
    <li>
     <input id="drag" type="checkbox" name="drag" onchange="update()" />
     <label for="drag">allow dragging</label>
    </li>
   </ul>
  </li>
<!--  ここまで -->
  </ul>
  </div> <!-- 追加 -->
 </body>
</html>
modify feature
 allow vertices creation: 角数を増やす(他のオプションと同時に動作しません)









 allow rotation: 点をドラッグして回転させる










 allow resizing: 点をドラッグして大きさを変える
 (keep aspect ratio: 比率を変えない)









 allow dragging: 点をドラッグして移動させる
(このドラッグでは複数のフィーチャを同時に移動する方法が見つかりませんでした。)

33 - マウスでフィーチャを描画 3 - ポリゴン(多角形)を移動する

33-3a ポリゴン(多角形)を移動する
examples フォルダにある「Drag Feature Example(drag-feature.html)」を参考に マウスで移動してみます。
「ol014-nippon_bmi_akiruno_pgis.html」 ファイルを続けて使います。

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







b 「ファイルを開く」ウィンドウで、「OpenLayers-2.13.1」->「examples」->「drag-feature.html」をクリックして選択し、「OK」ボタンをクリックします。






c 次のように「drag-feature.html」の内容の一部をコピーして「ol014-nippon_bmi_akiruno_pgis.html」に貼り付け、修正します。

---


 drawControls = {
  polygon: new OpenLayers.Control.DrawFeature(
   vectors, OpenLayers.Handler.Polygon),
  drag: new OpenLayers.Control.DragFeature(
   vectors), // 追加
  select: new OpenLayers.Control.SelectFeature(
   vectors,


---
   <li>
    <input type="radio" name="type" value="polygon" id="polygonToggle" onclick="toggleControl(this);" />
    <label for="polygonToggle">draw polygon</label>
   </li>

<!-- ここから追加 -->
  <li>
    <input type="radio" name="type" value="drag" id="dragToggle" onclick="toggleControl(this);" />
    <label for="dragToggle">drag feature</label>
  </li>
<!--  ここまで -->

   <li>
    <input type="radio" name="type" value="selecthover" id="selecthoverToggle" onclick="toggleControl(this);" />
    <label for="selecthoverToggle">Select features on hover</label>
   </li>
---














33-3b ポリゴン(多角形)を複数選択して移動する
このままでは、フィーチャを複数選択して同時に移動できませんでした。

Stack Overflow の

「Drag/Move Multiple Selected Features - OpenLayers」
http://stackoverflow.com/questions/4389221/drag-move-multiple-selected-features-openlayers

を参考にコードを次のように修正します。

---
<script type="text/javascript">
 var map, layer0, layer1, layer2, layer3, layer4, drawControls, vectors; // "vectors" 追加
---
  vectors = new OpenLayers.Layer.Vector("Vector Layer", { // "var" 削除
   renderers: renderer
  });
---
  drawControls = {
   polygon: new OpenLayers.Control.DrawFeature(
    vectors, OpenLayers.Handler.Polygon),
   drag: new OpenLayers.Control.DragFeature(
    vectors,
    // ここから追加 
    {
     onStart: startDrag,
     onDrag: doDrag,
     onComplete: endDrag
    }
    // ここまで
   ),
   select: new OpenLayers.Control.SelectFeature(
    vectors,
    {
     clickout: false, toggle: false,
     multiple: false, hover: false,
     toggleKey: "ctrlKey", // ctrl key removes from selection
     multipleKey: "shiftKey", // shift key adds to selection
     box: true,
     // ここから追加
     onSelect: addSelected,
     onUnselect: clearSelected
     // ここまで
    }
   ),
   selecthover: new OpenLayers.Control.SelectFeature(
    vectors,
    {
     multiple: false, hover: true,
     toggleKey: "ctrlKey", // ctrl key removes from selection
     multipleKey: "shiftKey" // shift key adds to selection
    }
   )
  };
---
// ここから追加
  /* Keep track of the selected features */
  function addSelected(feature) {
   selectedFeatures.push(feature);
  }
  /* Clear the list of selected features */
  function clearSelected(feature) {
   selectedFeatures = [];
  }
  /* Feature starting to move */
  function startDrag(feature, pixel) {
   // save hash with selected features start position
   lastPixel = pixel;
  }
  /* Feature moving */
  function doDrag(feature, pixel) {
   for (f in selectedFeatures) {
    if (feature != selectedFeatures[f]) {
     var res = map.getResolution();
     selectedFeatures[f].geometry.move(res * (pixel.x - lastPixel.x), res * (lastPixel.y - pixel.y));
     vectors.drawFeature(selectedFeatures[f]);
    }
   }
   lastPixel = pixel;

  /* because DragFeatures own handler overwrites dragSelected.lastPixel with pixel before this is called, calculate drag vector from movement of "feature" */
  }
  /* Featrue stopped moving */
  function endDrag(feature, pixel) {
   for (f in selectedFeatures) {
    f.state = OpenLayers.State.UPDATE;
   }
  }
// ここまで

 </script>
</head>
---


「select feature」をクリックしてラジオボタンをオンにし、「select features in a box」にチェックがついていることを確認して、複数のフィチャーをドラッグして選択します。
(最初の選択ではフィーチャが1つしか選択されませんでした。原因はわかりませんでした。1度選択を外して、もう一度選択します。)




フィーチャを1つだけドラッグすると、選択したフィーチャが一緒に移動します。

33 - マウスでフィーチャを描画 2 - ポリゴン(多角形)を選択する

33-2 ポリゴン(多角形)を選択する
examples フォルダにある「OpenLayers Select Feature Example(select-feature.html)」を参考に マウスで選択してみます。
「ol014-nippon_bmi_akiruno_pgis.html」 ファイルを続けて使います。

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







b 「ファイルを開く」ウィンドウで、「OpenLayers-2.13.1」->「examples」->「selsct-feature.html」をクリックして選択し、「OK」ボタンをクリックします。






c 次のように「selsct-feature.html」の内容の一部をコピーして「ol014-nippon_bmi_akiruno_pgis.html」に貼り付け、修正します。

---
<script type="text/javascript">
 var map, layer0, layer1, layer2, layer3, layer4, drawControls;
 OpenLayers.Feature.Vector.style['default']['strokeWidth'] = '2';
---
//  var polygonLayer = new OpenLayers.Layer.Vector("Polygon Layer"); 削除
// ここから追加
  // allow testing of specific renderers via "?renderer=Canvas", etc
  var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
  renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;
  var vectors = new OpenLayers.Layer.Vector("Vector Layer", {
   renderers: renderer
  });
  vectors.events.on({
   'featureselected': function(feature) {
    document.getElementById('counter').innerHTML = this.selectedFeatures.length;
   },
   'featureunselected': function(feature) {
    document.getElementById('counter').innerHTML = this.selectedFeatures.length;
   }
  });
// ここまで
  map.addLayers([layer0, layer3, layer1, layer2, layer4, vectors]); // "polygonLayer" 削除,  "vectors" 追加
  drawControls = {
   polygon: new OpenLayers.Control.DrawFeature(
    vectors, OpenLayers.Handler.Polygon), // "polygonLayer" を "vectors" に変更
// ここから追加
   select: new OpenLayers.Control.SelectFeature(
    vectors,
    {
     clickout: false, toggle: false,
     multiple: false, hover: false,
     toggleKey: "ctrlKey", // ctrl key removes from selection
     multipleKey: "shiftKey", // shift key adds to selection
     box: true
    }
   ),
   selecthover: new OpenLayers.Control.SelectFeature(
    vectors,
    {
     multiple: false, hover: true,
     toggleKey: "ctrlKey", // ctrl key removes from selection
     multipleKey: "shiftKey" // shift key adds to selection
    }
   )
// ここまで
  };
  for(var key in drawControls) {
   map.addControl(drawControls[key]);
  }
//  document.getElementById('noneToggle').checked = true; 削除
  map.addControl(new OpenLayers.Control.LayerSwitcher());
  map.addControl(new OpenLayers.Control.MousePosition());
  map.zoomToMaxExtent();
 } // End of "function init()"
 function toggleControl(element) {
  for(key in drawControls) {
   var control = drawControls[key];
   if(element.value == key && element.checked) {
    control.activate();
   } else {
    control.deactivate();
    }
  }
 }
/* 削除
 function allowPan(element) {
  var stop = !element.checked;
  for(var key in drawControls) {
   drawControls[key].handler.stopDown = stop;
   drawControls[key].handler.stopUp = stop;
  }
 }
*/
// ここから追加
 function update() {
  var clickout = document.getElementById("clickout").checked;
  if(clickout != drawControls.select.clickout) {
   drawControls.select.clickout = clickout;
 }
 var box = document.getElementById("box").checked;
  if(box != drawControls.select.box) {
   drawControls.select.box = box;
   if(drawControls.select.active) {
    drawControls.select.deactivate();
    drawControls.select.activate();
   }
  }
 }
// ここまで
</script>
</head>
<body onload="init()">
---
 <ul id="controlToggle">
  <li>
   <input type="radio" name="type" value="none" id="noneToggle"
     onclick="toggleControl(this);" checked="checked" />
   <label for="noneToggle">navigate</label>
  </li>
  <li>
   <input type="radio" name="type" value="polygon" id="polygonToggle" onclick="toggleControl(this);" />
   <label for="polygonToggle">draw polygon</label>
  </li>
<!-- ここから追加 -->
  <li>
   <input type="radio" name="type" value="selecthover" id="selecthoverToggle" onclick="toggleControl(this);" />
   <label for="selecthoverToggle">Select features on hover</label>
  </li>
  <li>
   <input type="radio" name="type" value="select" id="selectToggle" onclick="toggleControl(this);" />
   <label for="selectToggle">select feature (<span id="counter">0</span> features selected)</label>
   <ul>
    <li>
     <input id="box" type="checkbox" checked="checked" name="box" onchange="update()" />
     <label for="box">select features in a box</label>
    </li>
    <li>
     <input id="clickout" type="checkbox" name="clickout" onchange="update()" />
     <label for="clickout">click out to unselect features</label>
    </li>
   </ul>
  </li>
<!--  ここまで -->
 </ul>
 </body>
</html>

Select features on hover:
ポインタをフィーチャの上に重ねると色が変わる。

select feature (0 features selected):
クリックするとフィーチャの色が変わる。次のフィーチャをクリックするとそのフィーチャの色が変わり、色がかわっていたフィーチャは元の色に戻る。フィーチャ以外の部分をクリックしても変化はない。
 select features in a box:
 地図上をドラッグして範囲選択すると、その中のフィーチャの色が変わる。
 click out to unselect features:
 フィーチャ以外の部分をクリックすると元の色に戻る。

Use the shift key to select multiple features.
shift キーを押しながらクリックすると複数のフィーチャの色が同時に変わる。

Use the ctrl key to  toggle selection on features one at a time.
ctrl キーを押しながらひとつのフィーチャをクリックすると、「色が変わる」、「元の色に戻る」を繰り返す。
複数のフィーチャの色が変わっているときは、そのフィーチャだけが元の色に戻り、もう一度クリックするとそのフィーチャだけが色が変わり、他のフィーチャは元の色に戻る。



Note: the "clickout" option has no effect when "hover" is selected.
clickout オプションは、hover が選択されているときは効果がない。

33 - マウスでフィーチャを描画 1 - ポリゴン(多角形)を描く

33-1 マウスでポリゴン(多角形)を描く
examples フォルダにある「OpenLayers Draw Feature Example(draw-feature.html)」を参考に マウスでポリゴン(多角形)を描いてみます。
最初に、HTML ファイルを準備します。
(Eclipse 4.2 Juno の調子が良くないので、4.3 Kepler standerd をインストールしました。少し手順が変わります。)

a 「App Exploler」ペインの「ol009-nippon_bmi_akiruno_pgis.html」を右クリックし「コピー」をクリックします。








b 「App Exploler」ペイン上で右クリックし「貼り付け」をクリックします。









c 「名前の競合」ウィンドウで「ol014-nippon_bmi_akiruno_pgis.html」と入力し「OK」ボタンをクリックします。



d 「App Exploler」ペインの「ol014-nippon_bmi_akiruno_pgis.html」をダブルクリックして開きます。

e メニューの「ファイル」->「開く」をクリックします。







f 「ファイルを開く」ウィンドウで、「OpenLayers-2.13.1」->「examples」->「draw-feature.html」をクリックして選択し、「OK」ボタンをクリックします。






g 次のように「draw-feature.html」の内容の一部をコピーして「ol014-nippon_bmi_akiruno_pgis.html」に貼り付け、修正します。
(29-2 で追加したところは削除します。)

---
<link rel="stylesheet" href="OpenLayers-2.13.1/theme/default/style.css" type="text/css">
<link rel="stylesheet" href="OpenLayers-2.13.1/examples/style.css" type="text/css">
<!-- ここからスタイルを追加 -->
<style type="text/css">
/* リスト表示のときマークがつかないようにする */
 #controlToggle li {
  list-style: none;
 }
 p {
  width: 512px;
 }
 /* avoid pink tiles */
 /* 画像が表示できない時にピンク色のタイルを表示しないようにする */
 .olImageLoadError {
  background-color: transparent !important;
 }
</style>
<title>WMS Example BMI Akiruno PGIS2</title>
---
<script type="text/javascript">
 var map, layer0, layer1, layer2, layer3, layer4, drawControls; // "drawControls" 追加
---
 // わかりやすいようにポリゴンだけ追加
 var polygonLayer = new OpenLayers.Layer.Vector("Polygon Layer");
 map.addLayers([layer0, layer3, layer1, layer2, layer4, polygonLayer]); // "polygonLayer" 追加
// ここから追加
 drawControls = {
  polygon: new OpenLayers.Control.DrawFeature(polygonLayer, OpenLayers.Handler.Polygon)
 };

 for(var key in drawControls) {
  map.addControl(drawControls[key]);
 }

 document.getElementById('noneToggle').checked = true;
// ここまで
 map.addControl(new OpenLayers.Control.LayerSwitcher());
 map.addControl(new OpenLayers.Control.MousePosition());
 map.zoomToMaxExtent();

} // End of "function init()"

// ここから追加
function toggleControl(element) {
 for(key in drawControls) {
  var control = drawControls[key];
  if(element.value == key && element.checked) {
control.activate();
  } else {
  control.deactivate();
  }
 }
}

function allowPan(element) {
 var stop = !element.checked;
 for(var key in drawControls) {
  drawControls[key].handler.stopDown = stop;
  drawControls[key].handler.stopUp = stop;
 }
}
// ここまで
</script>
</head>
<body onload="init()">
---
<!-- ここから追加 -->
 <ul id="controlToggle">
  <li>
   <input type="radio" name="type" value="none" id="noneToggle"
     onclick="toggleControl(this);" checked="checked" />
   <label for="noneToggle">navigate</label>
  </li>
  <li>
   <input type="radio" name="type" value="polygon" id="polygonToggle" onclick="toggleControl(this);" />
   <label for="polygonToggle">draw polygon</label>
  </li>
 </ul>
<!-- ここまで -->
</body>
</html>



2013年12月23日月曜日

32 - KML データの読込 2 - KML レイヤの表示

32-3 kml レイヤの例
examples フォルダにある「KML Layer Example(kml-layer.html)」を参考に KML ファイルを読み込んでレイヤを表示します。
最初に、HTML ファイルを準備します。
(Eclipse 4.2 Juno の調子が良くないので、4.3 Kepler standerd をインストールしました。少し手順が変わります。)

a 「App Exploler」ペインの「ol009-nippon_bmi_akiruno_pgis.html」を右クリックし「コピー」をクリックします。








b 「App Exploler」ペイン上で右クリックし「貼り付け」をクリックします。









c 「名前の競合」ウィンドウで「ol013-nippon_bmi_akiruno_pgis.html」と入力し「OK」ボタンをクリックします。



d 「App Exploler」ペインの「ol013-nippon_bmi_akiruno_pgis.html」をダブルクリックして開きます。
e メニューの「ファイル」->「開く」をクリックします。







f 「ファイルを開く」ウィンドウで、「OpenLayers-2.13.1」->「examples」->「kml-layer.html」をクリックして選択し、「OK」ボタンをクリックします。
同じように「kml-layer.js」を開きます。





g 「kml-layer.js」の内容の一部をコピーして「ol013-nippon_bmi_akiruno_pgis.html」に貼り付け、次のように修正します。
(29-2 で追加したところは削除します。) 
---
 map.addLayers([layer0, layer3, layer1, layer2, layer4]);

 var kml_layer = new OpenLayers.Layer.Vector("KML", {
  strategies: [new OpenLayers.Strategy.Fixed()],
  projection: map.displayProjection, // 追加
  protocol: new OpenLayers.Protocol.HTTP({
   url: "kml/lines.kml", // ここを修正
   format: new OpenLayers.Format.KML({
    extractStyles: true, 
    extractAttributes: true,
    maxDepth: 2
   })
  })
 });
/*  ],
  center: new OpenLayers.LonLat(-112.169, 36.099),
  zoom: 11
 });
*/
 map.addLayer(kml_layer);

 map.addControl(new OpenLayers.Control.LayerSwitcher());
 map.addControl(new OpenLayers.Control.MousePosition());
 map.zoomToMaxExtent();
}
---

32-2 で作成したファイルを「openlayersTokyoproj」に保存します。
f ファイル -> 新規 -> フォルダー をクリックします。




g 「新規フォルダー」ウィンドウの「フォルダ名:」に「kml」と入力して「完了」ボタンをクリックします。









h 32-2 で作成したファイルを「kml」フォルダにコピーします。
(VMware Player で共有フォルダに設定したフォルダから g で作成したフォルダにコピーしました。)
user@debian7-vmw:~$ cp Public/Documents/*.kml mapsite/openlayersTokyoproj/kml/

i 「ここを修正」部分を次のように修正して地図を表示します。

url: "kml/Point.kml",










url: "kml/Line.kml",











url: "kml/Polygon.kml",