GeoJSON ファイルをマップ上にドラッグアンドドロップすると、データが表示されます。そのとき、倍率が変わってしまいました。
「256-ol3ex.js」
var defaultStyle = {
'Point': [new ol.style.Style({
/** ol.style.Style
* Base class for vector feature rendering styles.
* ベクタフィーチャがスタイルを描画するための基本クラス。
* (ol3 API)
*/
image: new ol.style.Circle({
/** ol.style.Circle
* Set circle style for vector features.
* ベクタフィーチャの円のスタイルを設定。(ol3 API)
*/
fill: new ol.style.Fill({
/** ol.style.Fill
* Set fill style for vector features.
* ベクタフィーチャの塗りつぶしスタイルを設定。(ol3 API)
*/
color: 'rgba(255,255,0,0.5)' }), radius: 5,
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: '#ff0', width: 1 }) }) })],
'LineString': [new ol.style.Style({
stroke: new ol.style.Stroke({
color: '#f00',
width: 3
})
})],
'Polygon': [new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(0,255,255,0.5)'
}),
stroke: new ol.style.Stroke({
color: '#0ff',
width: 1
})
})],
'MultiPoint': [new ol.style.Style({
image: new ol.style.Circle({
fill: new ol.style.Fill({
color: 'rgba(255,0,255,0.5)'
}),
radius: 5,
stroke: new ol.style.Stroke({
color: '#f0f',
width: 1
})
})
})],
'MultiLineString': [new ol.style.Style({
stroke: new ol.style.Stroke({
color: '#0f0',
width: 3
})
})],
'MultiPolygon': [new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(0,0,255,0.5)'
}),
stroke: new ol.style.Stroke({
color: '#00f',
width: 1
})
})]
};
var styleFunction = function(feature, resolution) {
var featureStyleFunction = feature.getStyleFunction(); /** getStyleFunction() * Get the style function * Returns: Layer style function.(ol3 API) */
if (featureStyleFunction) {
return featureStyleFunction.call(feature, resolution); /** Function.prototype.call() * The call() method calls a function with a given * this value and arguments provided individually. * call メソッドは、与えられた this 値とここに与えられ * た引数とともに、関数を呼び出します。 * (MDN[https://developer.mozilla.org/en-US/docs/Web/ * JavaScript/Reference/Global_Objects/Function/call]) */
} else {
return defaultStyle[feature.getGeometry().getType()]; /** 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) */
/** getType() * Get the type of this geometry. * ジオメトリの型を取得。(ol3 API) */
} };
var dragAndDropInteraction = new ol.interaction.DragAndDrop({
/** ol.interaction.DragAndDrop
* Handles input of vector data by drag and drop.
* ドラッグアンドドロップによってベクタデータの入力を取り扱いま
* す。(ol3 API)
*/
formatConstructors: [
ol.format.GPX, /** ol.format.GPX * Feature format for reading and writing data * in the GPX format. * GPX フォーマットでデータを読み書きするためのフィー * チャのフォーマット。(ol3 API) */
ol.format.GeoJSON, /** ol.format.GeoJSON * Feature format for reading and writing data * in the GeoJSON format. * GeoJSON フォーマットのデータを読み書きするための * フィーチャフォーマット。(ol3 API) */
ol.format.IGC, /** ol.format.IGC * Feature format for *.igc flight recording * files. * *.igc フライト記録ファイル用のフィーチャフォーマット。 * (ol3 API) */
ol.format.KML, /** ol.format.KML * Feature format for reading and writing data * in the KML format. * KML フォーマットでデータを読み書きするためのフィー * チャのフォーマット。(ol3 API) */
ol.format.TopoJSON /** ol.format.TopoJSON * Feature format for reading and writing data * in the TopoJSON format. * TopoJSON フォーマットでデータを読み書きするためのフィー * チャのフォーマット。(ol3 API) */
] });
var map = new ol.Map({
interactions: ol.interaction.defaults().extend([dragAndDropInteraction]), /** ol.interaction.defaults * Set of interactions included in maps by default. * Specific interactions can be excluded by setting * the appropriate option to false in the constructor * options, but the order of the interactions is fixed. * If you want to specify a different order for * interactions, you will need to create your own * ol.interaction.Interaction instances and insert * them into a ol.Collection in the order you want * before creating your ol.Map instance. * デフォルトでマップに含まれるインターラクションのセット。 * 具体的なインターラクションは、コンストラクタのオプションで適切 * なオプションをfalseに設定することで除外することができますが、 * インターラクションの順番は固定されています。インターラクション * に対して別の順番を指定したい場合は、独自の * ol.interaction.Interaction インスタンスを作成し、ol.Map イ * ンスタンスを作成する前に、望む順番で ol.Collection にそれ * らを挿入する必要があります。(ol3 API) * (訳注:インターラクションの順番は、API を参照してください。) */
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.BingMaps({
/** ol.source.BingMaps
* Layer source for Bing Maps tile data.
* Bing Maps タイルデータのレイヤソース。(ol3 API)
*/
imagerySet: 'Aerial', key: 'Ak-dzM4w...(省略)' }) }) ],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});
dragAndDropInteraction.on('addfeatures', function(event) {
/** on()
* Listen for a certain type of event.
* あるタイプのイベントをリッスンします。
* Returns: Unique key for the listener.(ol3 API)
*/
var vectorSource = new ol.source.Vector({
/*: ol.source.Vector
* Provides a source of features for vector layers.
* ベクタレイヤのフィーチャのソースを提供します。(ol3 API)
*/
features: event.features, projection: event.projection });
map.getLayers().push(new ol.layer.Vector({
/** getLayers()
* Get the collection of layers associated with
* this map.
* このマップと関連するレイヤのコレクションを取得します。
* (ol3 API)
*/
/** push(elem) * Insert the provided element at the end of the * collection. * コレクションの最後に供給されたエレメントに挿入します。 * Name: elem, Type: T, Description: Element * (ol3 API) */
/** ol.layer.Vector * Vector data that is rendered client-side. * クライアント側で描画されたベクタデータ。(ol3 API) */
source: vectorSource, style: styleFunction }));
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) */
view.fitExtent( /** fitExtent() * Fit the map view to the passed `extent` and * `size`. `size` is the size in pixels of the * box to fit the extent into. In most cases you * will want to use the map size, that is * `map.getSize()`. * マップビューを渡された`extent`と` size`に合わせます。 * `size`は、範囲に合わせるためボックスのピクセル単位の * サイズです。ほとんどの場合は、マップのサイズを使用します * が、それは`map.getSizeです()`。 * (v3.1.1/ol/ol/view.js) */
vectorSource.getExtent(), /** @type {ol.Size} */ (map.getSize()));
/** getExtent()
* Return: The layer extent.(ol3 API)
*/
/** @type * 値のタイプ(型)の説明 - 式などで表示 * (@use JSDoc[http://usejsdoc.org/]より) */
/** getSize() * Get the size of this map. * Returns: The size in pixels of the map in the DOM. * マップのサイズを取得。(ol3 API) */
});
var displayFeatureInfo = function(pixel) {
var features = [];
map.forEachFeatureAtPixel(pixel, function(feature, layer) {
/** forEachFeatureAtPixel
* Detect features that intersect a pixel on the viewport,
* and execute a callback with each intersecting feature.
* Layers included in the detection can be configured
* through opt_layerFilter. Feature overlays will always
* be included in the detection.
* ビューポート上のピクセルと交差するフィーチャを検出し、
* 各交差するフィーチャとコールバックを実行します。
* 検出に含まれるレイヤが opt_layerFilter を通じて
* 設定することができます。フィーチャーオーバーレイは
* 常に検出に含まれます。(ol3 API)
*/
features.push(feature); });
if (features.length > 0) {
var info = [];
var i, ii;
for (i = 0, ii = features.length; i < ii; ++i) {
info.push(features[i].get('name'));
/** Array.push
* 与えられた要素を追加することによって配列を変異させ、
* その配列の新しい長さを返します。
* (MDN [https://developer.mozilla.org/ja/docs/Web/
* JavaScript/Reference/Global_Objects/Array/push])
*/
/** get(key) * Gets a value. * (ol3 API[説明は Stable Only のチェックを外すと表示]) */
}
document.getElementById('info').innerHTML = info.join(', ') || ' ';
/** element.innerHTML
* innerHTML は、与えられた要素に含まれる全てのマークアップ
* と内容を設定または取得します。
* (MDN[https://developer.mozilla.org/ja/docs/Web/
* API/element.innerHTML])
*/
/** Array.join * 配列の全ての要素を繋いで文字列にします。 * (MDN [https://developer.mozilla.org/ja/docs/Web/ * JavaScript/Reference/Global_Objects/Array/join]) */
} else {
document.getElementById('info').innerHTML = ' ';
}
};
$(map.getViewport()).on('mousemove', function(evt) {
/** getViewport()
* Return: Viewport (ol3 API)
*/
/** jQuery on イベント */
var pixel = map.getEventPixel(evt.originalEvent); /** getEventPixel * Returns the map pixel position for a browser event. * ブラウザイベントに対して、マップのピクセル位置を返します。 * (ol3 API) */
displayFeatureInfo(pixel); });
map.on('click', function(evt) {
/** on
* Listen for a certain type of event.
* あるタイプのイベントをリッスンします。(ol3 API)
*/
displayFeatureInfo(evt.pixel); });




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