本類別 `phproogleMap` 完整封裝 Google Maps JavaScript API v2,讓 PHP 開發者無需撰寫 JavaScript 即可在網頁嵌入互動地圖,支援標記、資訊視窗、控制項、地址地理編碼等功能。
class phproogleMap {
// 私有屬性:API Key、縮放級別、寬高、中心點、地圖類型、標記點、地址標記、控制項、Div ID
// 魔術方法:__construct, __set, __get, __isset
// 公有方法:addGoogleMapControl, addMarker, addMarkerAddress, googleJS, drawMap
// 私有方法:setGoogleMapTypes, noJavascript
}
<?php
try {
$map = new phproogleMap();
// 基本設定
$map->apiKey = 'YOUR_GOOGLE_API_KEY'; // 必填
$map->mapZoom = 14; // 0-19
$map->mapWidth = 350;
$map->mapHeight = 300;
$map->mapType = 'normal'; // normal, satellite, hybrid, physical
$map->mapCenter = [-33.862828, 151.216974]; // [緯度, 經度]
$map->mapDivID = 'map';
// 添加經緯度標記
$map->addMarker(-33.858362, 151.214876, '<h2>雪梨歌劇院</h2><p>文化愛好者天堂</p>');
$map->addMarker(-33.862828, 151.216974, '<h3>皇家植物園</h3><a href="https://phpro.org">連結</a>');
// 添加地址標記(自動地理編碼)
$map->addMarkerAddress('2 Pitt St Sydney NSW Australia', '<h2>總公司</h2>');
$map->addMarkerAddress('122 Pitt St Sydney NSW Australia', '<h2>工廠</h2>');
// 添加地圖控制項
$map->addGoogleMapControl('GMapTypeControl'); // 地圖類型切換
$map->addGoogleMapControl('GSmallMapControl'); // 縮放/平移控制
$map->addGoogleMapControl('GOverviewMapControl'); // 概覽圖
} catch (Exception $e) {
echo $e->getMessage();
}
?>
<html>
<head><?php echo $map->googleJS(); ?></head>
<body><?php echo $map->drawMap(); ?></body>
</html>
| 屬性/方法 | 說明 | 範例值 |
|---|---|---|
| apiKey | Google Maps API 金鑰 | 'ABQIAAAA...' |
| mapZoom | 縮放級別 (0=世界, 19=建築物) | 12 (預設) |
| mapWidth/Height | 地圖容器寬高 (像素) | 350 / 300 |
| mapType | 地圖類型 | normal, satellite, hybrid, physical |
| mapCenter | 中心點 [緯度, 經度] | [25.0330, 121.5654] (台北) |
| addMarker(lat, lng, html) | 經緯度標記 + 資訊視窗 HTML | 見上例 |
| addMarkerAddress(addr, html) | 地址字串自動地理編碼標記 | 見上例 |
| addGoogleMapControl(control) | 添加控制項 | GMapTypeControl, GSmallMapControl, GScaleControl 等 |
| mapDivID | 容器 Div ID | 'map' (預設) |
| googleJS() | 輸入 API 載入 script 標籤 | 放在 <head> |
| drawMap() | 輸出地圖繪製 JavaScript | 放在 <body> |
GLargeMapControl:大型縮放/平移控制GSmallMapControl:小型縮放/平移控制GSmallZoomControl:僅縮放控制GScaleControl:比例尺GMapTypeControl:地圖類型切換GHierarchicalMapTypeControl:階層式類型切換GOverviewMapControl:縮略概覽圖建議直接使用 Google Maps JavaScript API v3,配合 PHP 傳遞資料給前端(JSON 格式),由前端渲染地圖,架構更清晰、效能更好、功能更完整。