複数のポリラインを含むポリゴンでオーバーレイを作成する際に問題があります。Google Maps Flash - 子午線を横切る穴のあるポリゴン
一部の国では穴が空いているポリゴンを作成したいと考えています(範囲外の部分は と表示されます)。私は複数のポリラインを持つポリゴンを作成することでこれを行います。 ポリライン。 最初のポリラインは地図の可視領域全体をカバーするように作成されました。
私はこれで始まった:
周りの1つの領域のみ-180分の180
var outer:Array = [ new LatLng(90, -180),
new LatLng(90, 180),
new LatLng(-90, 180),
new LatLng(-90, -180),
new LatLng(90, -180)]
donut = new Polygon([],
new PolygonOptions({
strokeStyle: new StrokeStyle({
thickness: 0}),
fillStyle: new FillStyle({
color: 0x000000,
alpha: 0.5})
}));
donut.setPolyline(0, outer)
map.addOverlay(donut);
にまたがる取得するには明らかにこれは唯一の緯度/経度の一つのロットにまたがるに問題があります。 がズームアウトされたとき、これはうまくいきません。この問題を回避するために、マップのtoSpan()とgetNorth()、getSouth()などの境界を取得しようとしました( )。これらは、可視地図の真のスパンである を返すことはありませんでした。これは180/360に達しました。
var pnw:LatLng = map.fromViewportToLatLng(new Point(0, 0), true)
var pse:LatLng = map.fromViewportToLatLng(new Point(map.width, map.height),
true)
これは、この
Lat Lng North West (89.77386689378173, -614.3294000000001)
LatLng South East (-89.07253945829217, 370.0455999999999)
と類似の結果を生じ
マイ溶液を マップの画素点のfromViewportToLatLng()を使用し、「真」にopt_nowrapを設定しましたここで私は正確に、経度の範囲が何であっても、 が発生しても、地図全体をカバーするようにポリライン(地図上の移動とズームの イベント)を正しく設定できます:
outer = [
new LatLng(pnw.lat(), pnw.lng(), true),
new LatLng(pnw.lat(), pse.lng(), true),
new LatLng(pse.lat(), pse.lng(), true),
new LatLng(pse.lat(), pnw.lng(), true),
new LatLng(pnw.lat(), pnw.lng(), true)
]
donut.setPolyline(0, outer)
*これまでのところ良いです。 * 今、ポリゴンにドーナツの穴を追加して、ドーナツポリゴンのポリラインを に追加します。
private var australia:Array = [
new LatLng(-9.7716, 143.0241),
new LatLng(-23.4610, 158.1852),
new LatLng(-45.1338, 147.1549),
new LatLng(-35.2615, 111.5153),
new LatLng(-20.6921, 113.0094),
new LatLng(-10.0746, 130.3239),
new LatLng(-9.7716, 143.0241)
]
private var nz:Array = [
new LatLng(-33.5951, 165.8254),
new LatLng(-33.5951, 179.7341),
new LatLng(-48.3845, 179.7341),
new LatLng(-48.3845, 165.8254),
new LatLng(-33.5951, 165.8254)
]
private var hawaii:Array = [
new LatLng(21.8000, -160.4347),
new LatLng(22.5477, -159.7975),
new LatLng(21.4067, -156.3533),
new LatLng(19.5336, -154.4197),
new LatLng(18.6511, -155.6392),
new LatLng(20.6633, -157.8639),
new LatLng(21.8000, -160.4347)
]
donut.setPolyline(1, hawaii)
donut.setPolyline(2, nz)
donut.setPolyline(3, australia)
マップビューポートで子午線が表示されるときに問題が発生します。この の問題は、ドーナツの穴のポリラインが視認可能なビューポートから緯度経度の他の側にジャンプするように、Zommedのときにはっきりと現れます。
時々外の配列のdoesntさえ正しくessentialy(むしろ 切り抜きよりも、国を超えるポリゴン)を反転させるためにドーナツ ポリゴンを引き起こし、レンダリング
私は、これは視覚化するためのタフな1であると認識。誰でもテストしたい場合は、.as + .fla ファイルを添付しました。
http://www.digital.leskiwis.com/maps/MapTest.zip