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("地図表示外アイテムのため削除"); } }
コメント
コメントを投稿