Google Web Toolkit を使ったGoogleMapにてMarkerを配置する歳に
そのマーカーをドラッグできるようにする方法について書いてみます。
だいたい、大まかには、Markerクラスを生成する時に、MarkerOptionsを指定してあげればよさそうです。
ちなみに下記のような感じで書いたら思ったように動作してくれました。
=========================================
MarkerOptions mo = MarkerOptions.newInstance();
mo.setClickable(true);
mo.setDraggable(true);
Marker marker = new Marker(point,mo);
marker.setDraggingEnabled(true);
map.addOverlay(marker);
=========================================
参考にしたJavadocはこちら。
Marker
MarkerOptions
2009年6月22日月曜日
2009年6月21日日曜日
Google App Engine SDKの更新
最近、GoogleAppEngineの開発環境を起動すると、下記のエラーが出てきて
どうやって直すのかと適当にやってみた。
最新のSDKはeclipseのsoftware updateから更新していたので、
プロジェクトのGoogleAppEngineの蘭を右クリックして、propertyをクリックして
そこから最新バージョンを選ぶことにより解消された。
どうやって直すのかと適当にやってみた。
WARN] ********************************************************
There is a new version of the SDK available.
-----------
Latest SDK:
Release: 1.2.1
Timestamp: Sat May 09 09:49:14 JST 2009
API versions: [1.0]
-----------
Your SDK:
Release: 1.2.0
Timestamp: Sat Apr 04 06:53:20 JST 2009
API versions: [1.0]
-----------
Please visit http://code.google.com/appengine for the latest SDK.
********************************************************
最新のSDKはeclipseのsoftware updateから更新していたので、
プロジェクトのGoogleAppEngineの蘭を右クリックして、propertyをクリックして
そこから最新バージョンを選ぶことにより解消された。
2009年6月18日木曜日
正規表現テストツール
GoogleAppEngineの練習もかねてスクラッチでプログラムを作ってみた。
簡単な、正規表現のチェック用プログラムです。
ちなみに言葉があっているかどうかはわかりませんが、2ヶ国語に対応させて見ました。
昨日書いた「?locale=de」が聞かないというのは、開発環境だけで、
実際のサーバでは正しく動作するようでした。
画面を作るのは、やっぱり大変ですね。
画面開発において、Delphiの簡単さを痛切に感じました。
ちなみにサイトのURLはこちら。
http://gaetooltk.appspot.com/
英語版はこちら
http://gaetooltk.appspot.com/?locale=de
#locale=deというのは、サンプルの影響を受けました。
国際化対応もめんどくさいけど、こんなに簡単にできるのはやっぱり便利ですね。
簡単な、正規表現のチェック用プログラムです。
ちなみに言葉があっているかどうかはわかりませんが、2ヶ国語に対応させて見ました。
昨日書いた「?locale=de」が聞かないというのは、開発環境だけで、
実際のサーバでは正しく動作するようでした。
画面を作るのは、やっぱり大変ですね。
画面開発において、Delphiの簡単さを痛切に感じました。
ちなみにサイトのURLはこちら。
http://gaetooltk.appspot.com/
英語版はこちら
http://gaetooltk.appspot.com/?locale=de
#locale=deというのは、サンプルの影響を受けました。
国際化対応もめんどくさいけど、こんなに簡単にできるのはやっぱり便利ですね。
2009年6月16日火曜日
GWTで多言語対応の方法
以前は、ふ~~ん。こんなのあるんだぁと読み飛ばしていた、
多言語対応の方法について試してみる。
参考にしたページは下記のページ。
Internationalizing a GWT Application
意外に難しいかと思ったら簡単だった。
単純化すると、下記の手順でできる。
1.Constantsを拡張したInterface StockWatcherConstants を作成。
(デフォルト文字列は、@DefaultStringValueアノテーションをつけておく)
2.同じフォルダにStockWatcherConstants _de.properties
というファイルを作っておく
(deは言語により変わってくる)
ファイルの内容は、1で作成したInterFaceのメソッドに対応して下記のような
テキストファイルになる
============================
stockWatcher = Aktienbeobachter
symbol = Symbol
price = Kurs
change = Änderung
remove = Entfernen
add = Hinzufügen
============================
3.ソース本文は、下記のように宣言する
private StockWatcherConstants constants = GWT.create(StockWatcherConstants.class);
このインスタンスから、リソースストリングを取得する。
4.StockWatcher.gwt.xmlに下記の部分を追記
これで、多言語対応が完了なはず。
ただ、実際に動作してみると、
http://localhost:8888/StockWatcher.html?locale=de
という風にアクセスしても正しく動かなかった。
ただ、もう一つの方法であるHTMLファイルに下記の分を記述する方法
だとうまく動作してくれた。
バグなのかどうか良くわからないけども、とりあえず1つの方法はうまく動作することが
わかったので、よかった。
これで、多言語対応のアプリケーションも作成できることがわかった。
多言語対応の方法について試してみる。
参考にしたページは下記のページ。
Internationalizing a GWT Application
意外に難しいかと思ったら簡単だった。
単純化すると、下記の手順でできる。
1.Constantsを拡張したInterface StockWatcherConstants を作成。
(デフォルト文字列は、@DefaultStringValueアノテーションをつけておく)
2.同じフォルダにStockWatcherConstants _de.properties
というファイルを作っておく
(deは言語により変わってくる)
ファイルの内容は、1で作成したInterFaceのメソッドに対応して下記のような
テキストファイルになる
============================
stockWatcher = Aktienbeobachter
symbol = Symbol
price = Kurs
change = Änderung
remove = Entfernen
add = Hinzufügen
============================
3.ソース本文は、下記のように宣言する
private StockWatcherConstants constants = GWT.create(StockWatcherConstants.class);
このインスタンスから、リソースストリングを取得する。
4.StockWatcher.gwt.xmlに下記の部分を追記
<extend-property name="locale" values="de"/>
これで、多言語対応が完了なはず。
ただ、実際に動作してみると、
http://localhost:8888/StockWatcher.html?locale=de
という風にアクセスしても正しく動かなかった。
ただ、もう一つの方法であるHTMLファイルに下記の分を記述する方法
<meta name="gwt:property" content="locale=de">
だとうまく動作してくれた。
バグなのかどうか良くわからないけども、とりあえず1つの方法はうまく動作することが
わかったので、よかった。
これで、多言語対応のアプリケーションも作成できることがわかった。
2009年6月11日木曜日
Google App Engineのデータ設計
GoogleAppEngineのデータストアは、普通のRDBに慣れてしまった人だと、
やや強い制約がある。
制約については、下記に書いてあるとおりになるのだけど、
http://code.google.com/intl/ja/appengine/docs/java/datastore/queriesandindexes.html#Restrictions_on_Queries
簡単に書いておくと下記のような感じ
やや強い制約がある。
制約については、下記に書いてあるとおりになるのだけど、
http://code.google.com/intl/ja/appengine/docs/java/datastore/queriesandindexes.html#Restrictions_on_Queries
簡単に書いておくと下記のような感じ
- 不等号のWhere条件は、1つのカラムしか指定できない
- OR条件や否定の条件は利用できない
- 当然、計算式を含む条件も設定できない
これを回避するためには、データの設計についても
従来のRDBとは異なる設計をしなくてはいけない。
おそらく、下記のようなプロパティを持つオブジェクトが合った時に
・賛成意見
・反対意見
反対意見が50%を超えるものを検索するというようなアプリケーションを作る場合には、
従来のRDBであれば、「反対意見>賛成意見」みたいなWhere節を書けばいいのだろうけど
Google App Engineの場合には、更新時に、平均値も計算して保管しておく必要が
あるのだと思う。
そして、「平均値>50%」みたいな検索をすることになると思う。
実際に、データ型を決めてみたら結構気持ち悪いくらい冗長なデータ型になってしまった
一応、下記のような記事もあったので、メモがてらにリンクしておく。
クラウド環境ではデータベースは「非正規化」して使う?GWTでGoogleユーザ認証を行う
今までやったところで、とりあえず、自分が描くアプリケーションを
作ってみている。
そこで、一つ、やり方がわからない部分が出てきた。
それは、GWTを使ってかつGoogleのアカウント認証を行うのはどうしたらいいのだろうか。
ちょっと調べてみると、下記のページにサンプルが合ったので、早速やってみた。
http://code.google.com/intl/ja/webtoolkit/tutorials/1.6/appengine.html#user
このサンプルでは、StockWatcherをさらに改良して、ユーザごとに管理できるようにする
というサンプル。
基本的には、リンク先のように、
・ログインを管理するサービスの作成。
LoginService.java:
LoginServiceAsync.java
LoginServiceImpl.java
・GWT-RPCを使いこれらの情報をやり取りするためのクラスの作成。
LoginInfo.java
あとは、
com.google.gwt.user.client.ui.Anchor
というクラスと使ってサービスから帰ってきたログイン用のURLにリンクを張る
という感じでやると、GWTで作った画面もログインが管理できるようになるらしい。
たぶん、これでやりたいことができるようになってきた。
作ってみている。
そこで、一つ、やり方がわからない部分が出てきた。
それは、GWTを使ってかつGoogleのアカウント認証を行うのはどうしたらいいのだろうか。
ちょっと調べてみると、下記のページにサンプルが合ったので、早速やってみた。
http://code.google.com/intl/ja/webtoolkit/tutorials/1.6/appengine.html#user
このサンプルでは、StockWatcherをさらに改良して、ユーザごとに管理できるようにする
というサンプル。
基本的には、リンク先のように、
・ログインを管理するサービスの作成。
LoginService.java:
LoginServiceAsync.java
LoginServiceImpl.java
・GWT-RPCを使いこれらの情報をやり取りするためのクラスの作成。
LoginInfo.java
あとは、
com.google.gwt.user.client.ui.Anchor
というクラスと使ってサービスから帰ってきたログイン用のURLにリンクを張る
という感じでやると、GWTで作った画面もログインが管理できるようになるらしい。
たぶん、これでやりたいことができるようになってきた。
Eclipseプロジェクトで途中からGoogle App Engine にチェックを入れた場合
最初にプロジェクトを作成する時には、Google App Engine にチェックを入れていなくて
途中でプロパティから変更してチェックを入れてみたら、エラーになってしまった。
これは、不具合なのかもしれないが、とりあえず、
他のプロジェジェクトから下記のファイルをコピーしてあげることにより
動くようになった。
appengine-web.xml
logging.properties
途中からの変更はまぁしないだろうけど、もしした場合には、そうすれば
大丈夫みたいです。
途中でプロパティから変更してチェックを入れてみたら、エラーになってしまった。
これは、不具合なのかもしれないが、とりあえず、
他のプロジェジェクトから下記のファイルをコピーしてあげることにより
動くようになった。
appengine-web.xml
logging.properties
途中からの変更はまぁしないだろうけど、もしした場合には、そうすれば
大丈夫みたいです。
登録:
投稿 (Atom)
-
AutoItとは、何かというと、人の入力なしにどんどんアプリケーションを 進めていくための仕組みといったところでしょうか。 といっても、かなり高度で、ほとんど開発言語と言ってもいいように思う。 今回は、AutoItで画面操作を記録する方法について書いて見ます。 AutoItのダウ...
-
AutoItでコンポーネントをクリックする命令を送る方法 仕様リンク: http://www.autoitscript.com/autoit3/docs/functions/ControlClick.htm AutitV3 WindowInfoのControlのAdv...
-
拡張子の変更を行いたいなと思ってちょこっと書いてみた サンプルプルプログラム 実際これだと、.の入ったファイル名の場合には、誤動作しそうですが、 書いてみるとこんな感じになるのだろうか。 Delphiだと、ChangeFileExtというダイレクトな関数があるのだけど、 Java...