【07】オーバーレイ
地図上に重畳またはオーバーレイされるすべてのコンテンツを総称してマップオーバーレイと呼びます。注釈、ベクター グラフィック要素 (ポリライン、多角形、円を含む)、情報ウィンドウなど。オーバーレイには独自の地理座標があり、マップをドラッグまたはズームすると、それに応じて移動します。
マップ API は次のタイプのオーバーレイを提供します。
オーバーレイ: オーバーレイの抽象基本クラスはすべて、このクラスのメソッドを継承します。
マーカー: マーカーは地図上の点を表し、マーク アイコンはカスタマイズできます。
ラベル: マップ上のテキスト ラベルを表します。ラベルのテキスト コンテンツをカスタマイズできます。
ポリライン: 地図上のポリラインを表します。
ポリゴン: マップ上のポリゴンを表します。ポリゴンは閉じたポリラインに似ていますが、塗りつぶしの色を追加することもできます。
Circle: 地図上の円を表します。
InfoWindow: 情報ウィンドウは、よりリッチなテキストやマルチメディア情報を表示できる特別なオーバーレイでもあります。注: マップ上で同時に開くことができる情報ウィンドウは 1 つだけです。
map.addOverlay メソッドを使用してマップにオーバーレイを追加し、map.removeOverlay メソッドを使用してオーバーレイを削除できます。このメソッドは InfoWindow には適用されないことに注意してください。
ラベルは地図上の点を表します。 API にはデフォルトのアイコン スタイルが用意されており、Icon クラスを通じてカスタム アイコンを指定することもできます。マーカーのコンストラクターのパラメーターは、Point と MarkerOptions (オプション) です。注: カスタム アイコンを使用する場合、ラベルの地理座標点は、ラベル付けに使用されるアイコンの中心に配置されます。アイコンのオフセット プロパティを通じてキャリブレーション位置を変更できます。
以下の例では、マップの中心点にラベルを追加し、デフォルトのラベル スタイルを使用します。
すごいです
ラベルアイコンを定義します
カスタマイズされたマーカーは、アイコン クラス 次の例では、アイコンは、MarkerOptions パラメーターの icon 属性によって設定されます。また、marker.setIcon() メソッドを使用することもできます。
マークイベントのリスニング
イベントの様子メソッドは Map イベントのメカニズムと同じです。イベントセクションを参照してください。
ドラッグ可能な注釈
marker的enableDragging和disableDragging方法可用来开启和关闭标注的拖拽功能。默认情况下标注不支持 拖拽,您需要调用marker.enableDragging()方法来开启拖拽功能。在标注开启拖拽功能后,您可以监听标注的dragend事件来捕获 拖拽后标注的最新位置。
内存释放
在API 1.0版本中,如果您需要在地图中反复添加大量的标注,这可能会占用较多的内存资源。如果您的标注在移除后不再使用,可调用 Overlay.dispose()方法来释放内存。注意在1.0版本中,调用此方法后标注将不能再次添加到地图上。自1.1版本开始,您不在需要使用此 方法来释放内存资源,API会自动帮助您完成此工作。
例如,您可以在标注被移除后调用此方法:
信息窗口在地图上方的浮动显示HTML内容。信息窗口可直接在地图上的任意位置打开,也可以在标注对象上打开(此时信息窗口的坐标与标注的坐标一致)。 您可以使用InfoWindow来创建一个信息窗实例,注意同一时刻地图上只能有一个信息窗口处于打开状态。
折线
Polyline表示地图上的折线覆盖物。它包含一组点,并将这些点连接起来形成折线。
添加折线
折线在地图上绘制为一系列直线段。可以自定义这些线段的颜色、粗细和透明度。颜色可以是十六进制数字形式(比如:#ff0000)或者是颜色关键字(比如:red)。
Polyline的绘制需要浏览器支持矢量绘制功能。在Internet Explorer中,地图使用VML绘制折线;在其他浏览器中使用SVG或者Canvas
以下代码段会在两点之间创建6像素宽的蓝色折线:
API自1.1版本起支持用户自定义覆盖物。
要创建自定义覆盖物,您需要做以下工作:
1.定义一个自定义覆盖物的构造函数,通过构造函数参数可以传递一些自由的变量。
2.设置自定义覆盖物对象的prototype属性为Overlay的实例,以便继承覆盖物基类。
3.实现initialize方法,当调用map.addOverlay方法时,API会调用此方法。
4.实现draw方法。
定义构造函数并继承Overlay
首先您需要定义自定义覆盖物的构造函数,在下面的示例中我们定义一个名为SquareOverlay的构造函数,它包含中心点和边长两个参数,用来在地图上创建一个方形覆盖物。
カスタムオーバーレイを初期化
map.addOverlay呼び出し時オーバーレイ定義時にselfを追加するメソッドの場合、API はオブジェクトの初期化メソッドを呼び出してオーバーレイを初期化します。初期化プロセス中に、オーバーレイに必要な DOM 要素を作成し、マップの対応するコンテナーに追加する必要があります。
マップには、オーバーレイ表示用のいくつかのコンテナーが用意されています。これらのコンテナー要素は、map.getPanes メソッドを通じて取得できます。
これらのオブジェクトは次のことを表しますさまざまなカバー コンテナ要素間にはオーバーレイ関係があります。最上位のレイヤーは情報ウィンドウのコンテンツを表示するために使用されます。次に、注釈クリック領域レイヤー、情報ウィンドウ シャドウ レイヤー、テキスト注釈レイヤーを示します。アノテーション レイヤーとベクター グラフィックス レイヤー。
カスタムの正方形のカバーは任意のレイヤーに追加できます。ここでは、子ノードの 1 つとして markerPane に追加することを選択します。
// 初期化メソッドを実装
SquareOverlay.prototype.initialize =function(map){
// マップオブジェクトインスタンスを保存
this._map = map;
// div要素を作成自己としてオーバーレイのコンテナを定義します
var div = document.createElement("div");
div.style.position ="absolute";
// 描画メソッドを実装します
SquareOverlay.prototype.draw =function(){// 地理座標に従ってピクセル座標に変換し、コンテナ var Position =this._map に設定します。 pointToOverlayPixel( this._center);
this._div.style.left = Position.x -this._length /2+"px";
this._div.style.top = Position.y -this._length /2 +" px";
}
カスタム オーバーレイは、Overlay の show メソッドと Hide メソッドを自動的に継承し、initialize メソッドによって返される DOM 要素の style.display 属性を変更します。カスタム オーバーレイ要素がより複雑な場合は、show メソッドと Hide メソッドを自分で実装することもできます。
他のメソッドのカスタマイズ コンストラクターのプロトタイプ属性を使用して、任意のカスタム メソッドを追加できます。たとえば、次のメソッドは呼び出されるたびにオーバーレイの表示状態を変更できます。
// カスタム メソッドを追加します
SquareOverlay.prototype.toggle =function(){
これで完全なカスタム オーバーレイが完成しました。書き込まれてマップに追加されます。
//マップの初期化varマップ= newbmap( "container"); map.getCenter(),100,"red");
map.addOverlay(mySquare);