1ページ内にGoogleMapの複数設置
shin > 1ページ内にGoogleMapの複数設置 @ 2011/10/25 15:46 |
---|
コード的にバグではなく仕様な気がしたので、こちらでご報告させていただきます。
GoogleMapsHelperを利用して、1ページ内にGoogleMapを複数出力しようとすると、正常に動作しません。 原因は、GoogleMapsHelper::_getScriptで生成するJavaScrptコードでmap変数がグローバルスコープにあるせいでした。そのため無名関数で囲えば解決します。 ただ、この問題はGoogleMapsHelperに限ったことではないと思うので、もしグローバル空間を汚すコードがあれば、修正されるとよいかなと思います。 それと、GoogleMapsHelperに関しての追加の提案としましては ・GoogleMapsAPIを_getScriptのたびに生成しているので、複数設置だと呼び出すたびにロードすることになるので別に分けるなど工夫。 ・GoogleMapsHelper::loadで$addressを指定した場合はロケーションを読み直すのが自然な気がする。(もっとも、今の仕様なのはelemenets/googlemaps.ctpで$longitude・$latitudeを強制的に優先で使用させるためだとは思いますが。) といった感じです。 よろしくお願い致します。 以下テンプレです。 ■ BaserCMSのバージョン:1.6.14 ■ レンタルサーバー名:ローカル ■ OSの種類:Windows Vista ■ PHPのバージョン:5.2.10 ■ スマートURLの利用:ON ■ 設置フォルダ:サブフォルダ ■ 利用しているデータベース:SQLite ■ PHPスキル(自己評価):C |
ryuring > Re: 1ページ内にGoogleMapの複数設置 @ 2011/10/27 17:39 |
---|
shinさん、ご報告ありがとうございます。
たしかに、グローバル空間汚しまくりですね。 取り急ぎ、課題としてチケットをきりました。 http://project.e-catchup.jp/issues/1756 baserCMSは、これまで、新機能開発は、機能実装ベースとなってました。 というわけで、とにかく動くように!という感じであった為、駄コードも散らばってます。 もう少しで、baserCMSとして最低限必要な機能実装が落ち着きそうですので、 今後はリファクタリングも含めた改善フェーズに入っていけると思っています。 こういったご指摘は本当にありがたいです。今後ともよろしくお願いします。 Twitter:@ryuring |