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

喜多耕一 kou35tochas @ gmail.com
2016年 12月 25日 (日) 18:43:51 PST


中川さん、みなさん

喜多です。
返信ありがとうございます。
今回の用途だと、地理院地図のようにたくさんのレイヤを扱うことはないので、leafletのオーソドックスなmapオブジェクトの指定方法につくりかえてもいいかもしれません。

ちょっと試してしてみます。

また、わからなくなったら質問するかもしれませんが、そのときはよろしくお願いします。

北海道 喜多耕一


2016/12/26 11:10 "Takashige Nakagawa" <takashige.nakagawa @ gmail.com>:

> 喜多さん
>
> 中川です。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 mailing list
> OSGeoJapan-discuss @ lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://lists.osgeo.org/pipermail/osgeojapan-discuss/attachments/20161226/65c0afd3/attachment-0001.html>


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