2

leaflet map同じページに2 つの異なる を表示しています。とある出来事の後。Polyline両方に登場してほしいです。可能であれば、コピーを作成して 2 つの異なる変数を保持することは避けたいと思います。

私は次のものを使用しようとしています:

var line_coordinates = [[1,2],[3,4]];
var my_polyline = L.polyline(line_coordinates);
my_polyline.addTo(map1);
my_polyline.addTo(map2);

ただし、上記のコードを実行すると、Polylineは にのみ表示されますmap2

その後、座標を somenew_line_coordinatesに再度変更する必要があり、次を実行します。

my_polyline.setLatLngs(new_line_coordinates);
my_polyline.redraw();

polylineが新しい座標に更新されて表示されるはずです。ただし、これも にのみ表示されmap2ます。

私は何を間違っていますか?私がやろうとしていることを達成することは可能ですか?

4

2 に答える 2

4

コメントに記載されている geocodezip のように、マップにポリラインを追加すると、ポリライン オブジェクトのthis._mapインスタンス変数が設定されます。したがって、現在実装されている方法で両方のマップにオブジェクトをレンダリングする方法はありません。

関連するソースコードはこちらでご覧いただけます

于 2013-08-15T15:32:52.087 に答える
1

複数の Leaflet マップに同じレイヤーを追加することはできません。しかし、より複雑なGeoJSONレイヤーグループを使用して同様の問題が発生し、最終的にレイヤーからGeoJSONオブジェクトを取得し、toGeoJSON()それを使用して2番目のマップの新しいレイヤーを作成することで解決しました。単純なポリラインの場合は、 を使用できますgetLatLngs()。そう:

var line_coordinates = [[1,2],[3,4]];
var my_polyline = L.polyline(line_coordinates);
my_polyline.addTo(map1);
var new_polyline = L.polyline(line_coordinates);
new_polyline.addTo(map2);

次のように動作するはずです。

var line_coordinates = [[1,2],[3,4]];
var my_polyline = L.polyline(line_coordinates);
my_polyline.addTo(map1);
var my_polyline_latlngs = my_polyline.getLatLngs();
var new_polyline = L.polyline(my_polyline_latlngs);
new_polyline.addTo(map2);
于 2015-04-04T14:29:20.670 に答える