前文
現在、地図上のデータを視覚化することは非常に人気があります。 ところで、視覚化だけでなく、ゲーム、ジオサービス、視覚化、統計など、多くのアプリケーションがあります。 一方で、キャンバスの使用は良好で現代的であり、他方では、オブジェクトの数が考えられない想像を超えるすべての制限を超える可能性があり、そのようなサービスではユーザーの速度が低下します大量など まれではありますが、canvas / html5をサポートしない「古い」ブラウザーのサポートが必要であることは言うまでもありません。
簡単な例

この写真のようなものを想像して、縮尺を縮小し、それによって「フレーム」内のポリゴンの数を5,000に増やします。 これに対処するには、タイルを使用してマップにオーバーレイレイヤーを追加するだけです。
ソースデータ
MySQLデータベースに、ポリゴンの頂点の座標で表されるいくつかのブロックを記述するテーブルがあるとします。 上記の写真の例では、これらはエカテリンブルクの街区の手描きの輪郭です。 各埋め立て地には、市の中心からの距離があり、いくつかのデータの視覚化の例として、ブロックの色付けに使用します(質量オプション:人口密度、環境汚染など)
コード
初心者にはわかりやすいように、できるだけ詳細にコードを文書化しようとしました。 コードは完璧にはほど遠い、1時間で書かれており、これがどのように機能するかを説明するためだけに見せかけています。
<?php
仕組み
- すべてのデータが収まるゾーンの境界を計算します
- ズームレベルごとに大きな画像を生成します。
- データを描画します
- 256x256の小さな断片に切り取ります
- パパに入れます
その後、すべてが簡単です。GoogleMap APIで追加のマップタイプを作成します
var BWPolygonsOptions = { getTileUrl: function(ll, z) { var X = ll.x % (1 << z);
オーバーレイレイヤーとして埋め込む
map.overlayMapTypes.insertAt(0, BWPolygonsMapType);
Google Map APIに精通しているため、スイッチやその他の装飾でこのレイヤーを自由に明るくすることができます。これに焦点を当てます。
デモ
仕事の結果は
こちらです。
スピード
たとえば、エカテリンブルク市の境界内にある
2,873ブロックが使用されました。
12から16までのズームのタイル数は
5,118です。
このスクリプトの実行時間は
1分11秒です。
生成は、HP Proliant DL 360 G5サーバー(2.50 GHzで1つのIntel Xeon E5420、4 Gb RAM)で実行されました。
ブログで決定するのが難しいと感じたので、それをPHPに入れました。