2016-11-02 6 views
2

リーフレットマップに整数ズームレベルのみを使用させることはできません。 -/+コントロールボタンのみを使用する限り、マウスホイールやmap.fitBounds(ポリゴン)のような関数を使用するとすぐに分数ズームレベルになります。リーフレットマップで整数ズームレベル(小数点レベルなし)のみを使用する

レベル0〜17のタイルを使用しているため、10.5のように2つのレベルの間で分数ズームレベルになってしまったため、タイルは拡大縮小されてぼやけていました。

ドキュメントでは、zoomSnapとzoomDeltaのデフォルトは1であると言われています。だから、とにかく分数ズームレベルになってしまうのはなぜですか?どうすればこれを防ぐことができますか?

私はこれらの

<!-- Leaflet --> 
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" /> 
<script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script> 

<!-- L.esri for Leaflet --> 
<script src="https://unpkg.com/[email protected]"></script> 

<!-- Elevation plugin for Leaflet --> 
<link rel="stylesheet" href="/app/libs/leaflet-elevation/dist/leaflet.elevation-0.0.4.css" /> 
<script src="https://d3js.org/d3.v3.min.js" charset="utf-8"></script> 
<!--<script src="app/libs/leaflet-elevation/dist/leaflet.elevation-0.0.4.min.js"></script>--> 
<script src="/app/libs/leaflet-elevation/dist/leaflet.elevation-0.0.4.src.js"></script> 

<!-- Marker Cluster plugin for Leaflet --> 
<link rel="stylesheet" type="text/css" href="https://unpkg.com/[email protected]/dist/MarkerCluster.Default.css"> 
<link rel="stylesheet" type="text/css" href="https://unpkg.com/[email protected]/dist/MarkerCluster.css"> 
<script src="https://unpkg.com/[email protected]/dist/leaflet.markercluster.js"></script> 

<!-- zoomhome plugin for Leaflet --> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"/> 
<link rel="stylesheet" href="/app/libs/leaflet-zoomhome/leaflet.zoomhome.css"/> 
<script src="/app/libs/leaflet-zoomhome/leaflet.zoomhome.js"></script> 

を使用して、ここで私は私のマップを初期化する方法だよ:

this.map = L.map(this.config.domNode, { 
     center: [50.13466432216696, -72.72949218750001], 
     zoom: 6, 
     zoomSnap: 1, 
     zoomDelta: 1, 
     zoomControl: false, 
     minZoom: 3, 
     maxZoom: 17, 
     scrollWheelZoom: this.config.scrollWheelZoom, 
     wheelDebounceTime: 20, 
     wheelPxPerZoomLevel: 50 
    }); 

    L.Control.zoomHome({ position: 'topright' }).addTo(this.map); 
+1

すべてのプラグインをロードした後に 'zoomSnap'オプションが' 1'であることを確認できますか?すべてがロードされた後に 'console.log(map.options.zoomSnap)'を実行します。 – IvanSanchez

+0

私は実際には犯人を見つけました。私は、あなたが言うように、zoomSnapの値が初期化後に変更されたと思っていました。おそらく、CDNを介してロードするプラグインの1つによって変わっていました。マップマップからベースマップに使用するtangramライブラリは、 "modifyScrollWheelBehavior"という関数でzoomSnapを0に設定しています。なぜ私は調査するのかは分かりませんが、実際には理由が分かりました。ベクトルタイルを使用しているので、おそらくこれは気にしませんが、マップ内の他のタイルレイヤとはまったく同じです。 – greenkarmic

答えて

3

使用して、それを無効にすることができますtangramライブラリはマップにベースマップを追加した後にzoomSnapを0に設定していました。基本的にマップの小数点以下のズームレベルを有効にします。

タングラムのドキュメントを掘り後、私は情報のこの小さなナゲットを見つけましたが:

modifyScrollWheel

デフォルトでズームながら、タングラムは独自のレンダリングループとのより良い同期のために、リーフレットのスクロールホイールの動作を変更します。これはあなたのアプリケーションに干渉する場合は、オプションのmodifyScrollWheelオプションでこの動作を無効にすることができます

var layer = Tangram.leafletLayer({ 
    modifyScrollWheel: false, 
    ... 
}); 

私はそれを試みたが、確かにそれは私の問題を修正しました。

+0

あなた自身の答えを受け入れるべきです;-) – IvanSanchez

+0

私はどこでもこれを探していました。ありがとう、トン。 –

0

フラクショナルズームはenhancement として追加されたあなたはzoomStep= 1

+0

zoomstep:1を私のオプションに追加しようとしましたが、変更はありません。またリンク先のコードでは、zoomStepのデフォルトも1です。デフォルトでは整数でなければなりません。理解できません。 – greenkarmic

+2

このオプションは 'zoomSnap'であり、[リーフレットAPIドキュメント](http://leafletjs.com/reference-1.0.0.html#map-zoomsnap)に記載されています。 'zoomStep'は単に存在しません。 – IvanSanchez

関連する問題