0

ユーザーがルート マップを作成してサイトに表示できる WordPress プラグインに取り組んでいます。管理パネルには、地図上の既存のルートのプレビューと、地図に追加したい新しい場所にドラッグできるマーカーが表示されます。

マップのデフォルトのズーム位置はヨーロッパに設定されています。しかし、たとえばオーストラリアにいくつかの停留所を追加すると、世界のその部分だけが表示され、新しい場所を指定するために使用されるドラッグ可能なアイコンが表示されなくなります。これは問題です.

そこで、フィットバウンドで修正することを考えました。これにより、常にドラッグ可能なマーカーと既に作成されたルートが画面に収まるようになります。私が持っているコードはマップ上のすべての場所を表示しますが、訪問した場所の間にポリラインを描画するため、何らかの形でヨーロッパのドラッグ可能なマーカーに線を描画しますが、ルートの一部ではないため、これを行うべきではありません。

ここで例を見ることができます-> http://jsfiddle.net/tijmen/HctvT/1/

コードの一部:

/* Draw lines between the markers */
function drawFlightPlan( flightPlanCoordinates ) {  
    var flightPath = new google.maps.Polyline({
        path: flightPlanCoordinates,
        geodesic: true,
        strokeColor: "#ad1700",
        strokeOpacity: 1.0,
        strokeWeight: 2
    });

    flightPath.setMap( map );

    fitBounds( flightPlanCoordinates );
}

/* Zoom the map so that all markers fit in the window */
function fitBounds( flightPlanCoordinates ) {
    var bounds = new google.maps.LatLngBounds ();

    /* Include this latlng value in europe, but I dont want a line going to that latng... */        
    var defaultLatlng = new google.maps.LatLng('52.378153', '4.899363');
    flightPlanCoordinates.push( defaultLatlng );

    for ( var i = 0, flightPlanLen = flightPlanCoordinates.length; i < flightPlanLen; i++ ) {
      bounds.extend ( flightPlanCoordinates[i] );
   }

   map.fitBounds( bounds );
}

オーストラリアのマーカー間の線は問題ありませんが、ヨーロッパへの線はそこにあるべきではありません (通常、ヨーロッパには別の色のマーカーがあるだけです)。

そもそもヨーロッパ行きの路線がある理由がよくわかりません。flightPath.setMap( マップ ); drawFlightPlan 関数内で実行されます。そして、fitBounds 関数がヨーロッパの latlng 値を flightPlanCoordinates 配列に追加するまではありません。

部分的なポリラインを削除する方法を探しましたが、うまくいく方法が見つかりません。すべてのマーカーまたはポリラインを削除する方法は知っていますが、単一のポリライン パーツを削除することはできません。それは可能ですか?

これを修正する方法についてのアイデアや提案、またはこれは私が望む方法で修正できないものですか?

4

1 に答える 1

1

これをにプッシュする代わりに、ヨーロッパで初期化boundsしますLatLngLatLngflightPlanCoordinates

http://jsfiddle.net/doktormolle/HctvT/4/

配列への参照をポリラインのパスとして使用すると、配列への変更がポリラインに影響します。

于 2013-10-08T18:27:12.783 に答える