地図とタイル座標
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
Maps SDK for iOS では、次の座標系が使用されます。
- 緯度と経度の値。世界中のポイントを一意に参照します。Google では世界測地系 WGS84 規格を使用しています。
- 世界座標。地図上のポイントを一意に参照します。
- ピクセル座標。特定のズームレベルで、地図上の特定のピクセルを参照します。
- タイル座標。特定のズームレベルで地図上の特定のタイルを参照します。
世界座標
API は、世界のある地点を地図上の場所に変換する必要がある場合、まず緯度と経度の値を世界座標に変換します。API は、メルカトル図法を使用してこの変換を実行します。
ピクセル座標(下記参照)の計算における便宜上、ズームレベル 0 の地図はベース タイルサイズの単一タイルであると想定されています。次に、ズームレベル 0 のピクセル座標に対応する世界座標を定義します。これを行うには、投影法を使用して緯度と経度をこのベースタイル上のピクセル位置に変換します。この世界座標は、地図の投影法の原点から特定の位置までを計測した浮動小数点値です。この値は浮動小数点値であるため、表示されている地図画像の現在の解像度より高精度にできます。世界座標は、現在のズームレベルから独立しているとも言えます。
Google Maps の世界座標はメルカトル図法の原点(地図の北西の隅、経度 180 度、緯度約 85 度)から測定され、x
の方向は東(右)に、y
の方向は南(下)に増加します。Google マップの基本メルカトル タイルは 256 x 256 ピクセルであるため、使用可能な世界座標空間は {0-256}, {0-256}
です。

メルカトル図法では、経度を表す幅は有限ですが、緯度を表す高さは無限です。そこで、最終的な地図形状が正方形になるように、メルカトル図法を利用して約 +/- 85 度で基本地図の画像を切り取っています。これにより、タイル選択が簡単になります。北極や南極に非常に近い位置などをプロットした場合、投影法により基本地図の使用可能座標外の世界座標が生成される可能性があります。
ピクセル座標
世界座標は所定の投影法の絶対位置を反映しますが、ピクセル座標は、特定のズームレベルで地図上の特定のピクセルを参照します。これらのピクセル座標は、次の式を使用して計算されます。
pixelCoordinate = worldCoordinate * 2zoomLevel
上記の式が示すように、ズームレベルを 1 つ高くするたびに x
方向と y
方向の両方で 2 倍に拡大されます。したがって、ズームレベルが 1 つ上がると、解像度が前のレベルの 4 倍になります。たとえば、ズームレベル 1 では、地図は 4 つの 256x256 ピクセルタイルで構成され、ピクセル空間は 512x512 になります。ズームレベル 19 では、地図上の各 x
および y
ピクセルは、0~256 * 219 の間の値を使用して参照できます。
世界座標は地図のタイルサイズに基づいているため、ピクセル座標の整数部を使用して現在のズームレベルによる該当場所の正確なピクセルを特定できます。ズームレベル 0 の場合、ピクセル座標は世界座標と等しくなります。
これで、各ズームレベルの地図上の各位置を正確に示すことができるようになりました。Maps SDK for iOS によるビューポートの構成
指定されたズームレベルでは、地図の中心(LatLng
として)、
含まれる DOM 要素のサイズ
は、この境界ボックスをピクセル座標に変換します。次に、API は指定されたピクセル境界内に入るすべての地図タイルを論理的に決定します。これらの地図タイルはそれぞれタイル座標を使用して参照されます。これにより、地図画像の表示が非常に簡単になります。
タイル座標
ズームレベルが高い場合、API ですべての地図画像を一度に読み込むことはできません。代わりに API は、各ズームレベルの画像を、地図タイルのグループに分割します。このタイルは、アプリケーションが判別する順序で論理的に配置されます。地図を新しい位置にスクロールする、または新しいズームレベルにスクロールすると、API はピクセル座標を使用して必要なタイルを決定し、そのピクセル座標の値を取得するタイルのグループに変換します。これらのタイル座標は、指定されたポイントの画像を含むタイルを論理的に判別しやすくするスキームを使用して割り当てられます。
Google マップのタイルは、ピクセルの原点と同じ原点から番号が振られます。Google によるメルカトル図法の実装では、原点タイルは常に地図の北西端になり、x
値は西から東に増分し、y
値は北から南に増分します。タイルは、この原点からの x,y
座標を使用してインデックスが付けられます。たとえば、ズームレベル 2 で地球が 16 個のタイルに分割された場合は、各タイルは一意の x,y
ペアで参照できます。

ピクセル座標をタイルサイズ(256)で除算した数値の整数部分を使用することで、間接的に現在のズームレベルのタイル座標を生成できます。
例
次の例は、さまざまなズームレベルで、イリノイ州シカゴの緯度 / 経度の値、世界座標、ピクセル座標、およびタイル座標を示しています。ズーム コントロールを使用して、さまざまなズームレベルの座標値を確認できます。
座標の計算方法は、コードを表示すると確認できます。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-08-31 UTC。
[null,null,["最終更新日 2025-08-31 UTC。"],[[["\u003cp\u003eThe Maps SDK for iOS utilizes four coordinate systems: latitude/longitude, world, pixel, and tile coordinates, to pinpoint locations on the map.\u003c/p\u003e\n"],["\u003cp\u003eWorld coordinates, derived from latitude/longitude using the Mercator projection, represent points on the map and are independent of zoom level.\u003c/p\u003e\n"],["\u003cp\u003ePixel coordinates denote specific pixels on the map at a given zoom level and are calculated by multiplying world coordinates by 2 raised to the power of the zoom level.\u003c/p\u003e\n"],["\u003cp\u003eTile coordinates are used to efficiently load map imagery by dividing the map into a grid of tiles, with each tile assigned a unique x,y coordinate based on its position.\u003c/p\u003e\n"],["\u003cp\u003eThe API utilizes these coordinate systems to translate between real-world locations and their corresponding representations on the map, enabling accurate display and navigation.\u003c/p\u003e\n"]]],["The Maps SDK for iOS utilizes latitude/longitude, world, pixel, and tile coordinate systems. World coordinates, based on the Mercator projection, convert latitude/longitude to map locations, independent of zoom. Pixel coordinates reference specific pixels at a zoom level, calculated by multiplying world coordinates by 2 to the power of the zoom level. Tile coordinates, derived from pixel coordinates, divide the map into tiles, enabling the API to retrieve and display only necessary imagery at various zoom levels. Each coordinate type is measured from the northwest corner.\n"],null,["Select platform: [Android](/maps/documentation/android-sdk/coordinates \"View this page for the Android platform docs.\") [iOS](/maps/documentation/ios-sdk/coordinates \"View this page for the iOS platform docs.\") [JavaScript](/maps/documentation/javascript/coordinates \"View this page for the JavaScript platform docs.\")\n\nThe Maps SDK for iOS uses the following coordinate systems:\n\n- Latitude and longitude values, which reference a point on the world uniquely. (Google uses the [World Geodetic\n System WGS84](https://en.wikipedia.org/wiki/World_Geodetic_System) standard.)\n- World coordinates, which reference a point on the map uniquely.\n- Pixel coordinates, which reference a specific pixel on the map at a specific zoom level.\n- Tile coordinates, which reference a specific tile on the map at a specific zoom level.\n\nWorld coordinates\n\nWhenever the API needs to translate a location in the world to a location on\na map, it first translates latitude and longitude values into a\n*world* coordinate. The API uses the\n[Mercator\nprojection](https://en.wikipedia.org/wiki/Mercator_projection) to perform this translation.\n\nFor convenience in the calculation of pixel coordinates (see below)\nwe assume a map at zoom level 0 is a single tile of the base tile size.\nWe then define world coordinates relative to pixel coordinates at zoom\nlevel 0, using the projection to convert latitudes and longitudes to\npixel positions on this base tile. This world coordinate is a floating\npoint value measured from the origin of the map projection to the\nspecific location. Note that since this value is a floating point value,\nit may be much more precise than the current resolution of the map image\nbeing shown. A world coordinate is independent of the current zoom level,\nin other words.\n\nWorld coordinates in Google Maps are measured from the Mercator\nprojection's origin (the northwest corner of the map at 180 degrees\nlongitude and approximately 85 degrees latitude) and increase in\nthe `x` direction towards the east (right) and increase in\nthe `y` direction towards the south (down). Because the\nbasic Mercator Google Maps tile is 256 x 256 pixels, the usable\nworld coordinate space is `{0-256}, {0-256}`.\n\nNote that a Mercator projection has a finite\nwidth longitudinally but an infinite height latitudinally. We cut off\nbase map imagery utilizing the Mercator projection at approximately\n+/- 85 degrees to make the resulting map shape square, which allows\neasier logic for tile selection. Note that a projection may produce\nworld coordinates outside the base map's usable coordinate space\nif you plot very near the poles, for example.\n\nPixel coordinates\n\n*Pixel coordinates* reference a specific pixel on the map at a\nspecific zoom level, whereas world coordinates reflect absolute locations on a\ngiven projection. Pixel coordinates are calculated using the following\nformula: \n\n```scdoc\npixelCoordinate = worldCoordinate * 2zoomLevel\n```\n\nFrom the above equation, note that each increasing zoom level\nis twice as large in both the `x` and `y`\ndirections. Therefore, each higher zoom level results in a resolution four\ntimes higher than the preceding level. For example, at zoom level 1,\nthe map consists of 4 256x256 pixels tiles, resulting in a pixel space\nfrom 512x512. At zoom level 19, each `x` and `y` pixel\non the map can be referenced using a value between\n0 and 256 \\* 2^19^.\n\nBecause we based world coordinates on the map's tile size, a\npixel coordinate's integer part has the effect of identifying the exact pixel\nat that location in the current zoom level. Note that for zoom level 0, the\npixel coordinates are equal to the world coordinates.\n\nWe now have a way to accurately denote each location on the map,\nat each zoom level. The Maps SDK for iOS constructs a viewport\ngiven the zoom level center of the map (as a `LatLng`) and the\nsize of the containing DOM element, and\ntranslates this bounding box into pixel coordinates. The API then determines\nlogically all map tiles which lie within the given pixel bounds. Each of\nthese map tiles are referenced using [tile coordinates](#tile-coordinates) which greatly simplify the displaying of map\nimagery.\n\nTile coordinates\n\nThe API cannot load all the map imagery at once for the higher zoom levels.\nInstead, the API breaks up the imagery at each zoom level\ninto a set of map tiles, which are logically arranged in an order which the\napplication understands. When a map scrolls to a new location, or to a new\nzoom level, the API determines which tiles are needed\nusing pixel coordinates, and translates those values into a set\nof tiles to retrieve. These tile coordinates are assigned using\na scheme which makes it logically easy to determine which tile contains\nthe imagery for any given point.\n\nTiles in Google Maps are numbered from the same origin as that\nfor pixels. For Google's implementation of the Mercator projection, the\norigin tile is always at the northwest corner\nof the map, with `x` values increasing from west to\neast and `y` values increasing from north to south. Tiles\nare indexed using `x,y` coordinates from that origin. For\nexample, at zoom level 2, when the earth is divided up into 16 tiles,\neach tile can be referenced by a unique `x,y` pair:\n\nNote that by dividing the pixel coordinates by the tile size (256) and\ntaking the integer parts of the result, you produce as a by-product\nthe tile coordinate at the current zoom level.\n\nExample\n\nThe following example displays coordinates for Chicago, IL:\nlatitude/longitude values, world coordinates, pixel coordinates, and tile\ncoordinates. Use the zoom control to see the coordinate values at various\nzoom levels.\n\nTo see how the coordinates were calculated,\n[view\nthe code](/maps/documentation/javascript/examples/map-coordinates)."]]