Google Maps API(V3) Geocoding API Web サービスで、座標を取得する
前置き
ここ数年間、住所から座標(緯度・経度)を取得するために、Geocodingで提供されているAPIを利用していました。ジオコーディングデータを取得する為のサービスが、ある時期までGoogleから提供されていなかったため、Geocodingは、大変有益で有名なサービスとなりました。
が!!!
GoogleがGoogle Maps API Webサービスの一部として、Geocoding APIを提供開始したため、こちらを利用することにします。
注意事項(引用元)
・Google Geocoding API の使用は、1 日あたり 2,500 件まで
・Geocoding API は Google マップと組み合わせて使用する場合にのみ使用できます。地図に表示せずにジオコーディングの結果のみを利用することは禁止されています。
概要
Web API呼び出しURL
http://maps.google.com/maps/api/geocode/output?parameters
パラメータ
output : 出力形式の指定
・json
・xml
parameters
・address or latlng
・bounds
・region
・language
・sensor
コード
住所から緯度・経度取得
PHP5+XMLで。
<?php
$address = rawurlencode("東京都港区台場1-1-1");
$url = "http://maps.google.com/maps/api/geocode/xml?address={$address}&sensor=false";
$xml = simplexml_load_file($url);
if($xml->error){
return;
}
if((string)$xml->status != "OK"){
return;
}
$lat = ((string)$xml->result->geometry->location->lat);
$lng = ((string)$xml->result->geometry->location->lng);
print $lat . " - " . $lng;
?>
結果
35.6351932 – 139.7763928
というわけで
・簡単
・ジオコーディング・逆ジオコーディング可能
・レスポンス高速
な、Geocoding APIを使いましょう。
セッションIDのふりなおし(Java, J2EE, resin)
目的
ユーザーのログイン前後で同じセッションIDが使われているのを、ログインのタイミングで新しいセッションIDを使うようにする。セッション・ハイジャック対策。
セッション・ハイジャックについて
セッションを用いたログイン管理を行なっているアプリケーションにおいて、攻撃者が用意したセッションIDをリクエストに含まされた正規の利用者が、正規の手順でログインすることで、不正なセッションIDを用いたログイン認証が行われてしまう。
環境
言語:java(J2EE)
サーバー:resin(http://www.caucho.com/)
結論
${RESIN_HOME}/conf/resin.confのsession-configに、
<reuse-session-id>false</reuse-session-id>
を追加。
流れ
某ECサイトで、ログイン前後で(というか、cookieの期限がすぎるまで)、同一のセッションIDがずっと使いまわされていることが判明。
↓
ソースチェック。ログイン処理の際に、セッション無効化処理がコーディングされていることを確認。ということは、アプリケーションじゃなくて環境の問題?
request.getSession().invalidate();
↓
ローカルでデバッグしてみたら、セッションIDがふりかわっていることを確認。
↓
少し考えた末に、ローカルはTomcat, サーバではResinを使用していることを思い出す。
↓
ドキュメントチェック
↓
発見(http://www.caucho.com/resin-3.0/config/webapp.xtp#session-config)
↓
設定追加
<reuse-session-id>false</reuse-session-id>
↓
完成!
というわけで、
・サーバ上だとデバッグしにくい。
画像付きのアラートビューを表示する – iPhoneアプリ開発
概要
iPhone(iOS)標準のアラートビュー(UIAlertView)に、画像(UIImage)を表示する方法。
内容
APIの標準機能では、画像表示機能が提供されていない。
実現のために、アラートダイアログに表示するメッセージ内に改行コードを挿入して、スペースを確保し、そのスペースに、UIImageViewを表示する方法で、カスタマイズをおこなうことができる。
NSString *alertMessage = @"ボスに電話します。\nよろしいですか?\n\n\n\n\n\n0000-0000-0000"; UIAlertView *infoAlertView = [[UIAlertView alloc] initWithTitle:nil message:alertMessage delegate:nil cancelButtonTitle:@"いいえ" otherButtonTitles:@"はい", nil]; UIImageView *i = [[UIImageView alloc]initWithFrame:CGRectMake(85, 70, 110, 73)]; i.image = [UIImage imageNamed:@"boss.jpg"]; [infoAlertView addSubview:i]; [infoAlertView show];
QuartzCoreとの組み合わせで、角丸画像ももちろん表示できる!
#import "QuartzCore/QuartzCore.h" // (略) NSString *alertMessage = @"ボスに電話します。\nよろしいですか?\n\n\n\n\n\n0000-0000-0000"; UIAlertView *infoAlertView = [[UIAlertView alloc] initWithTitle:nil message:alertMessage delegate:nil cancelButtonTitle:@"いいえ" otherButtonTitles:@"はい", nil]; UIImageView *i = [[UIImageView alloc]initWithFrame:CGRectMake(85, 70, 110, 73)]; i.image = [UIImage imageNamed:@"boss.jpg"]; i.layer.cornerRadius = 6; i.clipsToBounds = YES; [infoAlertView addSubview:i]; [infoAlertView show];



