[OSGeoJapan-discuss] 地理院地図で出典明示を選択した地図で更新したい

Takashige Nakagawa takashige.nakagawa @ gmail.com
2016年 12月 25日 (日) 18:10:37 PST


喜多さん

中川です。removeControlの引数controlが指定されていませんね。ご推察のとおりここにattributionControlが渡っていれば解決するはずです。

自分で提案しておいて何なのですが、attributionControlをマップオブジェクトから削除して新しいattributionControlを追加するのはスマートな方法ではないなと思います。

一番よいのは、

1. マップオブジェクトの生成時にattributionControlのprefixオプションを空文字("")にする。
2. L.TileLayerのインスタンスを定義するときにattributionというオプションを渡す。

ことです。
そうすれば、attributionControlに関しては一切コーディングが不要(Leafletが勝手に表示を切り替えてくれます)になるのですが、そのように改修することは可能でしょうか?


2016年12月23日 0:55 喜多耕一 <kou35tochas @ gmail.com>:
> 中川さん みなさま
>
> ありがとうございます。
>
> GSI.GLOBALS.map.removeControl(GSI.GLOBALS.map.attributionControl);
> GSI.GLOBALS.map.addControl(new L.control.attribution({
>         position: 'bottomright',
>         prefix:this._attribution
>  }));
>
> としても、removeControlの次の処理の、
> leaflet-src.jsの7990行目でエラーが発生します。
>
> L.Map.include({
> addControl: function (control) {
> control.addTo(this);
> return this;
> },
>
> removeControl: function (control) {
> control.removeFrom(this); ←ここでエラー
> return this;
> },
>
> 多分、attributionControlの指定方法が間違っていると思うのですが・・・。
>
> 添付ファイルにエラー発生時のデバッグ画面を添付します。
>
> attributionControlを追加することはできますが、地図を切り替えるたびに、コントロールが増えていきます。
> 申し訳ありませんが、助言をよろしくお願いします。
>
> 北海道 喜多耕一
>
> 2016年12月20日 17:15 Takashige Nakagawa <takashige.nakagawa @ gmail.com>:
>
>> 中川です。
>> すみません、最後のコード間違いがありました。
>> 正しくはこちらです。
>>
>> マップオブジェクト.removeControl(マップオブジェクト.attributionControl);
>> マップオブジェクト.addControl(L.control.attribution({
>>  prefix:"",
>>     attribution:"あたらしい出典"
>> }));
>>
>> 出典明示の部品(attribitionControlといいます)をマップオブジェクトから削除して、またあらたに付け加えています。
>>
>>
>> 2016年12月20日 17:07 Takashige Nakagawa <takashige.nakagawa @ gmail.com>:
>> > 喜多さん
>> >
>> > 中川です。
>> >
>> > 本当はGSI.BaseLayerをnewするときに、下記のようにオプションで出典を指定できれば良いのですが(18532行目あたり)、
>> >
>> > options.attribution = "あたらしい出典";
>> >
>> > コードがそうなっていないので、
>> >
>> > ちょっと試しに、GSI.BaseLayerの最後に
>> >
>> > onAdd:function(map){
>> >      L.TileLayer.prototype.onAdd.call(this,map);
>> >      this._map.attributionControl.setPrefix("");
>> >
>> > this._map.attributionControl.addAttribution(this.baseLayerList[this.activeIndex].attribution);
>> > }
>> >
>> > をいれてみましたが、それだと「情報リスト>ベースマップ」でベースレイヤを変更した時に出典明示が更新されないんですね。
>> >
>> >
>> > コードをちゃんと見たわけではないので、ずばりの回答はできないのですが、更新したいタイミングで、下記を行えばできます。
>> >
>> > マップオブジェクト.attributionControl.setPrefix("");
>> > マップオブジェクト.attributionControl.addAttribution("前の出典");
>> > マップオブジェクト.attributionControl.addAttribution("あたらしい出典");
>> >
>> >
>> > あるいは、前の出典を消すのが面倒ならば、下記でもできます。
>> >
>> > マップオブジェクト.removeControl(this._map.attributionControl);
>> > マップオブジェクト.addControl(L.control.attribution({
>> >  prefix:"",
>> >     attribution:"あたらしい出典"
>> > }));
>> >
>> > 参考になれば幸いです。
>> >
>> > 2016年12月20日 9:37 Nobusuke Iwasaki <wata909 @ gmail.com>:
>> >> 喜多さん、みなさん
>> >>
>> >> いわさきです。
>> >> 私もleaf letはよく分かってないのですが、FOSS4G
>> >> TokyoでMauricioさんのハンズオンをコピーして、作ったサンプルコードを下に公開してみます。
>> >> https://jsfiddle.net/wata909/v5trzdbb/
>> >>
>> >> 地理院タイルと室蘭市の空中写真を切り替えて、出典も変わるようになっているので、参考になるかと思います。
>> >>
>> >> 地理院地図パートナーネットワーク会議での資料が以下になりますので、ご参考下さい。
>> >> http://www.slideshare.net/wata909/foss4g-69748525
>> >>
>> >> #みなさん、もっとスマートな回答がありましたら、よろしくお願いします(汗
>> >>
>> >> 2016年12月19日 21:23 喜多耕一 <kou35tochas @ gmail.com>:
>> >>> みなさま
>> >>>
>> >>> 北海道の喜多です。
>> >>>
>> >>> 現在、地理院地図をGithibでフォークして、OpenStreetMapを表示できるようにカスタマイズしています。
>> >>> https://koukita.github.io/gsimaps/
>> >>>
>> >>> ここで、ベースマップを選択したときに、右下の出典明示を更新したいと考えています。
>> >>>
>> >>> 出典明示の表示と、地図を変更したときの出典明示の値の取得まではできたのですが、この値を出典明示のコントロールに代入して、更新する方法がわかりません。
>> >>>
>> >>> 出典明示の値は、layers0.txtの"attribution"に値を入力しています。
>> >>> その値をgsimaps.jsの18616行目「this.setAttribution(
>> >>> this._attribution);」で取得しています。
>> >>>
>> >>> どこにどのようなコードを書けばいいのか教えていただければ助かります。
>> >>>
>> >>> なにぶんJavascript初心者ですので、よろしくお願いします。
>> >>>
>> >>>
>> >>> 北海道 喜多耕一
>> >>>
>> >>>
>> >>> _______________________________________________
>> >>> OSGeoJapan-discuss mailing list
>> >>> OSGeoJapan-discuss @ lists.osgeo.org
>> >>> http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>> >>
>> >>
>> >>
>> >> --
>> >> 岩崎 亘典
>> >> _______________________________________________
>> >> OSGeoJapan-discuss mailing list
>> >> OSGeoJapan-discuss @ lists.osgeo.org
>> >> http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>> _______________________________________________
>> OSGeoJapan-discuss mailing list
>> OSGeoJapan-discuss @ lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>
>


OSGeoJapan-discuss メーリングリストの案内