geohashの解像度をナントカする
geohashは賢いのだが,どうも解像度が低いようで,実際に表示されている地図外の情報を取得してしまう場合がある。
bigtableではgeohashを使わざるを得ないので,データベースレベルの話ではこの問題を解決できない。
となると,大まかに取得した情報をサーバーサイドかクライアントサイドでフィルタリングする他ない。
サーバー負荷とプログラミングのし易さを考えて,今回はクライアントサイドでフィルタリングすることにした。
bigtableではgeohashを使わざるを得ないので,データベースレベルの話ではこの問題を解決できない。
となると,大まかに取得した情報をサーバーサイドかクライアントサイドでフィルタリングする他ない。
サーバー負荷とプログラミングのし易さを考えて,今回はクライアントサイドでフィルタリングすることにした。
//フィルター済みリスト構築
var filteredList:ArrayCollection = new ArrayCollection();
var latLngBounds:LatLngBounds = map.getLatLngBounds();
for each (var item:Object in list) {
var latlng:LatLng = new LatLng(Number(item.latitude), Number(item.longitude));
if (latLngBounds.containsLatLng(latlng)) {
log.info("地図表示内アイテムのため追加");
filteredList.addItem(item);
} else {
log.info("地図表示外アイテムのため削除");
}
}
コメント
コメントを投稿