### 啟用 Google Maps JavaScript API

1. 建立或選擇專案
2. 啟用 Google Maps JavaScript API 與相關服務
3. 建立適當的金鑰

# Showing pixel and tile coordinates

Read the documentation or view this example full screen.

```function initMap() {
var chicago = new google.maps.LatLng(41.850, -87.650);

var map = new google.maps.Map(document.getElementById('map'), {
center: chicago,
zoom: 3
});

coordInfoWindow.setContent(createInfoWindowContent(chicago, map.getZoom()));
coordInfoWindow.setPosition(chicago);
coordInfoWindow.open(map);

coordInfoWindow.setContent(createInfoWindowContent(chicago, map.getZoom()));
coordInfoWindow.open(map);
});
}

var TILE_SIZE = 256;

function createInfoWindowContent(latLng, zoom) {
var scale = 1 << zoom;

var worldCoordinate = project(latLng);

Math.floor(worldCoordinate.x * scale),
Math.floor(worldCoordinate.y * scale));

Math.floor(worldCoordinate.x * scale / TILE_SIZE),
Math.floor(worldCoordinate.y * scale / TILE_SIZE));

return [
'Chicago, IL',
'LatLng: ' + latLng,
'Zoom level: ' + zoom,
'World Coordinate: ' + worldCoordinate,
'Pixel Coordinate: ' + pixelCoordinate,
'Tile Coordinate: ' + tileCoordinate
].join('<br>');
}

// The mapping between latitude, longitude and pixels is defined by the web
// mercator projection.
function project(latLng) {
var siny = Math.sin(latLng.lat() * Math.PI / 180);

// Truncating to 0.9999 effectively limits latitude to 89.189. This is
// about a third of a tile past the edge of the world tile.
siny = Math.min(Math.max(siny, -0.9999), 0.9999);

TILE_SIZE * (0.5 + latLng.lng() / 360),
TILE_SIZE * (0.5 - Math.log((1 + siny) / (1 - siny)) / (4 * Math.PI)));
}```
`<div id="map"></div>`
```/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html, body {
height: 100%;
margin: 0;
}```
``` <!-- Replace the value of the key parameter with your own API key. -->
<script async defer
</script>```

## 自己試試看

```<!DOCTYPE html>
<html>
<title>Showing pixel and tile coordinates</title>
<meta name="viewport" content="initial-scale=1.0">
<meta charset="utf-8">
<style>
/* Always set the map height explicitly to define the size of the div
* element that contains the map. */
#map {
height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html, body {
height: 100%;
margin: 0;
}
</style>
<body>
<div id="map"></div>
<script>
function initMap() {
var chicago = new google.maps.LatLng(41.850, -87.650);

var map = new google.maps.Map(document.getElementById('map'), {
center: chicago,
zoom: 3
});

coordInfoWindow.setContent(createInfoWindowContent(chicago, map.getZoom()));
coordInfoWindow.setPosition(chicago);
coordInfoWindow.open(map);

coordInfoWindow.setContent(createInfoWindowContent(chicago, map.getZoom()));
coordInfoWindow.open(map);
});
}

var TILE_SIZE = 256;

function createInfoWindowContent(latLng, zoom) {
var scale = 1 << zoom;

var worldCoordinate = project(latLng);

Math.floor(worldCoordinate.x * scale),
Math.floor(worldCoordinate.y * scale));

Math.floor(worldCoordinate.x * scale / TILE_SIZE),
Math.floor(worldCoordinate.y * scale / TILE_SIZE));

return [
'Chicago, IL',
'LatLng: ' + latLng,
'Zoom level: ' + zoom,
'World Coordinate: ' + worldCoordinate,
'Pixel Coordinate: ' + pixelCoordinate,
'Tile Coordinate: ' + tileCoordinate
].join('<br>');
}

// The mapping between latitude, longitude and pixels is defined by the web
// mercator projection.
function project(latLng) {
var siny = Math.sin(latLng.lat() * Math.PI / 180);

// Truncating to 0.9999 effectively limits latitude to 89.189. This is
// about a third of a tile past the edge of the world tile.
siny = Math.min(Math.max(siny, -0.9999), 0.9999);

TILE_SIZE * (0.5 + latLng.lng() / 360),
TILE_SIZE * (0.5 - Math.log((1 + siny) / (1 - siny)) / (4 * Math.PI)));
}
</script>
<script async defer