geohashの解像度をナントカする

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("地図表示外アイテムのため削除");        
  }
}

コメント

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法

Google DriveにCURLでアップロードするには?