はじめに
Googleマップの「スター」(地図上の★アイコン)を使って、お気に入りの場所をポコポコ登録している。
主に、旅行先の「行きたいところリスト」。
お気に入りの場所を保存する – パソコン – マップ ヘルプ
しかし、どうも昔の旅行で「スター」をつけたハズの地域なのに、「全くスターが表示されない」場合がある。
昔のヤツほど怪しい。
↓の例では、過去に青森でつけたスターが全く表示されていない。
(たくさんスターをつけて、かつ削除も自分ではしていない)
北海道は、比較的最近スターをつけているので、たくさん表示(★)されている。
そこで、Googleマップの「スター」を1度バックアップして、経過観測してみることにした。
「スター」とは微妙に別件ではあるが、もともとGoogleマップで扱うKMLの上限が1000なのか?みたいな議論はあり(仕様は不明)、本件「スター」についてはどうなんだろうな?と思っていたのだ。
Max. Number of Placemarks in KML for Google Maps
Max. Number of Placemarks in KML for Google Maps – Stack Overflow
Googleマップ公式サイトには仕様が書いてないので、探っていくしかなさそう。
さて。
結論から言うと、
- 「スター」には「表示件数」or「読み込みサイズ」の上限がある
- 上限を超えてもGoogle内にはデータが残っており、いつでもバックアップから取得可能
- しかし上限を超えた分は、地図上で「スター」表示されない(★アイコンなし)
- 表示されなくなる条件は、「件数」か「サイズ」か・・・
- いずれにしろ800~1000件あたりを超えると、危ないと思われ
という感じかなぁ。
分かんないけど。
以下、詳細にて。
※2018/12/02追記
表示されなくなったスターを、マイマップに引っ越しさせる方法は、以下を参照。
やじり鳥 Googleマップの「スター」(お気に入りの場所)をエクスポートして、Googleマイマップにインポートする方法
Googleマップの「スター」をダウンロードする(ファイル取得)
「スター」のバックアップ・ファイル(GeoJSON)は、以下のURLから取得可能。
https://takeout.google.com/settings/takeout
「マップ(場所)」だけチェックをONにして、「次へ」。
これでファイルをゲットできる。
中身は、こんな感じ。
※「スター」1個分の記述(名称や緯度経度など)
{ "geometry" : { "coordinates" : [ 140.5961782, 40.6439597 ], "type" : "Point" }, "properties" : { "Google Maps URL" : "http://maps.google.com/?cid=13916538126556719178", "Location" : { "Address" : "日本, 〒036-0367 青森県黒石市前町1−3", "Business Name" : "すずのややきそば", "Country Code" : "JP", "Geo Coordinates" : { "Latitude" : "40.6439597", "Longitude" : "140.5961782" } }, "Published" : "2015-11-15T03:34:46Z", "Title" : "すずのややきそば", "Updated" : "2015-11-15T03:34:46Z" }, "type" : "Feature" },
上記は「スター1件分」で、スターの数だけ↑が続く、テキストファイルになっている。
自分のファイルの場合、全部で3万行だった。
GeoJsonファイルの確認
「スターが表示されない」問題について、最初に疑ったのは「もしかして古いのは自動で削除される?」ということだった
そこで、今年の1月頃に1度バックアップしておき、最近(6月)になって取得したファイルと比較してみることにした。
1月から6月までの間にも、どんどん「スター」を登録していったので、もしかしたら古いのが削除されているかも、と思ったのだ。
結果としては、特に問題なかった。
古い「スター」も、ファイル上では勝手に削除されていることはなかった。
(diffで確認した/店名変更の更新など些細な違い以外はナシ)
また、1月以降に新しく追加した「スター」は、当然ちゃんとGeoJsonにも追加されていた。
そこで、重い腰を上げてGeoJsonファイルの中身をチェックすることに。
まず、GeoJsonのスター・データには、それぞれ更新日が付いている。
またファイル上での記述も、その更新日順になっている。
"Updated" : "2015-11-15T03:34:46Z"
そこで、一番日付が古い「スター」をGoogleマップ上でみてみる。
「スター」がついていないことを、確認した。
GeoJson上では「スター」としてデータが残っているのに、地図上では「スター」として表示されない。
(地図上では★が付かない)
そして少しずつ日付の新しい「スター」を確認していき、現在のGoogleマップで「スター」として表示されていない範囲を特定した。
1500件ほどあるスターの、約850件目以降の古いスターは地図上で表示されないようだった。
ちなみに、その閾値の周辺には、ほぼ同時刻のスターが固まっている。
(同時刻のスターの中で、表示されるものと、されないものがある)
そのため「○年前より古いのは表示しない」という条件ではなさそう、という所感。
たぶん条件は、「件数」か、「サイズ」。
ちなみに、1500件あるスターのGeoJsonファイルも、1MBに達しないレベル。
サイズ的な側面で言っても、その程度でフォーマットやpaser、jsのlimitに到達しないんじゃないかな?
やはり、あるとしたらGoogle側で独自にlimitを設定している可能性か、もしくは別の条件か・・・(件数とか)。
Googleマップ上での表示確認
手元のGeoJson上で、表示される/されないの境界が分かった。
ここから更に、Googleマップ上でスターを増やしたら、どうなるだろうか?
- Googleマップ上で、新規にスターを1件登録してみる
- ページを再度読み込み(データのリロード)
- さっきまで「スター」になっていたモノで、一番日付の古いのがどうなっているか確認
特に変化なし。
新たに「表示されなくなったスター」は、なさそうだった。
しかし数件スターを増やしたところで、変化が出た。
さっきまで「スター表示」されていた中で、一番古いデータが「スター表示」されなくなったのだ。
以降も、繰り返しこの事象が発生した。
やはり、新しいスターを追加すると、古いスターが「スター表示」されなくなるらしい。
(地図上では★が付かない)
しかし、その詳細なロジックは不明。
数件追加毎に、1件ずつ古いのが消えたような挙動ではあったが、単なるタイムラグかもしれない。
もしくは、監視対象外のみえないところで(もっと新しいスターで)、1件追加毎に消えているヤツがあったかもしれない。
正直、そこまでウォッチするガッツはない。
なので、ロジックは不明。
いずれにしろ、自分の場合は約850件が「表示される/されない」の境界線になっていた。
件数的にそのラインが怪しいか、それくらいのサイズ/文字数(*1)が怪しいんじゃないかと。
(*1)1件あたりのサイズは、店名などによって微妙に異なるのが、まぁだいたい同じ感じじゃないかと
まとめ
とりあえず、「古いスターは表示されなくなる」という問題がハッキリして良かった。
なんかこう、永久保存版としては別の手法を考えた方がいいかもしれないな。
細かくマイマップで分けて保存するとか。
そんな感じ。