Leafletの地図が「API KEY REQUIRED」だらけになったときはCARTOのタイルを疑う
執筆・制作:何でも自作する人(運営者について)
個人開発 / Webアプリ / Leaflet / トラブル対応
物の一生を地図でたどる自作アプリ「物の一生ビューア」を開いたら、地図が一面、斜めの文字で埋まっていました。

タイル1枚1枚に「API KEY REQUIRED」「carto.com/basemaps/apikey」と書かれています。地図まわりのコードは変えていませんでした。
エラーが出ないので気づきにくい
ブラウザの開発者ツールを開いても、コンソールにエラーは出ていませんでした。ネットワークのタブを見ても、タイルの読み込みはすべて成功しています。
使っていたのは、Leaflet でよく使われる CARTO の暗い地図です。
L.tileLayer('https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png', {
// APIキーは付けていない
});
CARTO のサーバーは、キーのないリクエストにも「成功」として案内の画像を返していました。 読み込みは成功しているので、Leaflet もブラウザもエラーを出しません。
タイルを1枚だけ取ってきて確かめる
原因を確かめるには、タイルを1枚 curl で取ってきて、ヘッダーと画像を見るのが早いです。2026年10月14日に試した結果です。
curl -s -o tile.png -D - "https://a.basemaps.cartocdn.com/dark_all/5/28/12.png"
HTTP/1.1 200 OK
Content-Type: image/png
Content-Length: 2513
Cache-Control: public, max-age=2592000, immutable
ステータスは200、中身は正常なPNGです。保存した画像を開くと、記事の冒頭と同じ「API KEY REQUIRED」の画像でした。
ステータスコードだけを見る監視では、この状態を「正常」と判定してしまいます。画像を実際に開いて見るのが確実です。
OpenStreetMapのタイルに切り替える
CARTO でキーを取る方法もありますが、ほかの自作アプリでは OpenStreetMap の標準タイルを使っていたので、そちらにそろえました。
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap',
className: 'light-tiles',
});
OpenStreetMap の標準タイルは、帰属表示(attribution)を出すことや、大量に読み込まないことなどの利用規約があります。個人の小さなアプリなら問題ない範囲ですが、アクセスが増えるならタイルの提供元を見直す必要があります。
暗い地図を色の反転で作るのはやめた
CARTO の暗い地図の代わりに、最初は OpenStreetMap のタイルを CSS で反転させて暗くしました。
.dark-tiles { filter: invert(1) hue-rotate(180deg) brightness(.85) contrast(.9); }
見た目はそれらしくなりましたが、あとでデザインを見直したときに、反転したタイルは全体が濁って見え、上に置いたピンが埋もれることが分かりました。
最終的には明るい地図に戻し、色を少しだけ抑えて、ピンが目立つようにしています。
.light-tiles { filter: saturate(.35) brightness(1.03); }
無料タイルを使うときに見ておくこと
無料の地図タイルは、提供元の都合で条件が変わります。今回はエラーが出ないので、自分で地図を開くまで気づけませんでした。
- 地図が変になったら、まずタイルを1枚取ってきて画像を見る
- タイルのURLとキーの要否を、使っている提供元の案内ページで確かめる
- 複数のアプリで同じタイルを使っておくと、切り替えが1か所の知見で済む
地図が「壊れている」のではなく「案内が表示されている」状態なので、画像の文字をそのまま検索すると原因にたどり着けます。