Table of Contents
GompWebServiceJsClient
Map8 (web service) API 的 client 端 SDK (for Javascript).
透過本 SDK,您可以很方便地於開發前端瀏覽器網頁 Javascript 程式時,直接使用本 SDK library 的 API,輕輕鬆鬆就能呼叫 台灣圖霸 | Map8 Platform
的 API 並取回結果供您做進一步的處理。
Parameters
Examples
// 一個最基本的範例 (此處以 [Map8 Place Autocomplete API](https://www.map8.zone/map8-api-docs/#api-place-autocomplete-api) 為例)
// 當然,HTML 內,請先如下引用本 SDK 之 .js 檔案 :
// <script type="text/javascript" src="https://api.map8.zone/maps/js/gomp-web-service-js-client.min.js?key=您的key"></script>
var gompWebServiceJsClient = new GompWebServiceJsClient({key: gomp.accessToken});
...
var config = {};
...
config = extend(config, {query: searchInput});
var request = gompWebServiceJsClient.autocomplete(config, function(responseText) {
if (responseText instanceof Error) { // Error
console.log("Error");
}
else { // Success
var resp = JSON.parse(responseText);
console.log(resp);
if (resp.predictions) { // autocomplete...
console.log(resp.predictions);
}
}
});
// 一個較複雜 (但也比較接近通常的使用情況) 的範例
var gompWebServiceJsClient = new GompWebServiceJsClient({key: gomp.accessToken});
...
var config = {};
...
config = extend(config, {query: searchInput});
var request = gompWebServiceJsClient.autocomplete(config, function(responseText) {
if (responseText instanceof Error) { // Error
console.log("Error");
}
else { // Success
var resp = JSON.parse(responseText);
console.log(resp);
// 此處示範將得到的 API response 透過 data transformation 手法以變形為適用於自身 application 的資料結構
// 1. 先定義 data transformation function
var transformMap8ApiResponseGeoRecordToFeatures = function(map8ApiRespGeoRecord) {
var feature = {
type : "Feature",
properties : map8ApiRespGeoRecord,
geometry : {
coordinates: [
map8ApiRespGeoRecord.geometry.location.lng,
map8ApiRespGeoRecord.geometry.location.lat
],
type : "Point"
},
place_type: []
};
var featureTitle;
var featureDescription;
feature.place_type.push(map8ApiRespGeoRecord.type);
if (map8ApiRespGeoRecord.type == '地點') {
featureTitle = map8ApiRespGeoRecord.name + ' (' + map8ApiRespGeoRecord.city + map8ApiRespGeoRecord.town + ')';
feature.place_type.push(map8ApiRespGeoRecord.cat);
}
else if (map8ApiRespGeoRecord.type == '地址') {
featureTitle = map8ApiRespGeoRecord.city + map8ApiRespGeoRecord.town + map8ApiRespGeoRecord.name;
}
else if (map8ApiRespGeoRecord.type == '道路') {
featureTitle = map8ApiRespGeoRecord.city + map8ApiRespGeoRecord.town + map8ApiRespGeoRecord.name;
}
// Extend properties
feature.properties.name = map8ApiRespGeoRecord.name;
feature.place_name = featureTitle;
feature.center = feature.geometry.coordinates;
return feature;
});
var matchingFeatures = [];
if (resp.status == "OK") {
var candidatesList;
// 2. 依據所呼叫 API 的回傳結構,指派給通用的變數 (`candidatesList`)
if (resp.predictions) { // autocomplete...
candidatesList = resp.predictions;
}
if (resp.results) {
candidatesList = resp.results;
}
// 3. 最後即可直接以此通用變數開始做 data transformation
if (candidatesList) {
candidatesList.forEach(function(candidate) {
//console.log(candidate); // Deubg
var feature = transformMap8ApiResponseGeoRecordToFeatures(candidate);
matchingFeatures.push(feature);
});
}
}
// 4. 將 data transformation 完的結果指派回 res.features (假設 event handler 之預期為這樣的結構),然後發出 `results` 事件供相關 listener / subscriber 去處理
res.features = matchingFeatures;
this._eventEmitter.emit('results', res);
}
});
findplace
Parameters
-
clientConfig
object 呼叫本findplace
function / method 時所欲套用之設定值。請參閱 Find Place API。-
clientConfig.input
string 用以呼叫 Map8 Find Place API 之input
參數。 -
clientConfig.inputtype
string 用以呼叫 Map8 Find Place API 之inputtype
參數。 (optional, default"textquery"
) -
clientConfig.locationbias
string? 為<緯度>,<經度>
格式之字串 (逗號分隔)。用以呼叫 Map8 Find Place API 之input
參數。
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
placedetails
Parameters
-
clientConfig
object 呼叫本placedetails
function / method 時所欲套用之設定值。請參閱 Place Details API-
clientConfig.placeid
string 欲取得的地點之 ID (由之前呼叫之 Map8 台灣圖霸其他 API 所回傳;例如 Autocomplete API)。
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
autocomplete
Parameters
-
clientConfig
object 呼叫本autocomplete
function / method 時所欲套用之設定值。請參閱 Place Autocomplete API-
clientConfig.query
string 使用者對欲查詢地點截至目前當下的輸入,用來透過 Map8 Place Autocomplete API 之input
參數以獲得 autocomplete 的結果。 -
clientConfig.proxymity
array? 為一帶有兩個元素之陣列 : 第一個元素為地理座標之經度
,第二個為緯度
。此參數將轉而用為呼叫 Map8 Place Autocomplete API 時的location
參數。 -
clientConfig.radius
number? 指定限制之方圓距離。也就是呼叫 Map8 Place Autocomplete API 時radius
參數,請參照之。
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
textsearch
Parameters
-
clientConfig
object 呼叫本textsearch
function / method 時所欲套用之設定值。請參閱 Text Search API-
clientConfig.query
string 使用者對欲查詢地點截至目前當下的輸入,用來透過 Map8 Text Search API 之query
參數以獲得 Text Search 的結果。 -
clientConfig.cat
string? 指定欲搜尋周遭之地點類型。請參考 Map8 Text Search API。 -
clientConfig.proxymity
array? 為一帶有兩個元素之陣列 : 第一個元素為地理座標之經度
,第二個為緯度
。此參數將轉而用為呼叫 Map8 Text Search API 時的location
參數。 -
clientConfig.radius
number? 指定限制之方圓距離。也就是呼叫 Map8 Text Search API 時radius
參數,請參照之。
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
nearbysearch
Parameters
-
clientConfig
object 呼叫本nearbysearch
function / method 時所欲套用之設定值。請參閱 Nearby Search API-
clientConfig.query
string 為以地理座標之緯度
,然後逗號,
分隔,接著經度
之參數。此參數即用為呼叫 Map8 Nearby Search API 時的location
參數。 -
clientConfig.nearbyRadius
number? 指定限制之方圓距離。也就是呼叫 Map8 Nearby Search API 時的radius
參數,請參照之。 -
clientConfig.nearbyLimit
number? 指定取回的資料筆數。也就是呼叫 Map8 Nearby Search API 時的limit
參數,請參照之。 -
clientConfig.nearbyCat
string? 列舉欲搜尋周遭之地點類型。也就是呼叫 Map8 Nearby Search API 時的cat
參數,請參照之。 -
clientConfig.collection_id
string? 指定針對您的哪一份資料集做搜尋。也就是呼叫 Map8 Nearby Search API 時的collection_id
參數,請參照之。
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
directions
Parameters
-
clientConfig
object 呼叫本directions
function / method 時所欲套用之設定值。請參閱 Directions API-
clientConfig.query
string 格式為 :<起點之經度>,<起點之緯度>;<中途點之經度>,<中途點之緯度>;...;<終點之經度>,<終點之緯度>.json
。乃以逗號分隔之<經度>,<緯度>
座標為一組,然後以分號分隔,連接數組座標。第一組為起點,最後一組為終點。而中間的數組則為中途點 (waypoints)。 -
clientConfig.profile
string 指定用以規劃路徑的<交通工具>
。也就是呼叫 Map8 Directions API 時<交通工具>
參數,請參照之。
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
geocode
地址定位 (geocoding, 將 地址 / 門牌
轉為地理座標 經緯度
),與反地址定位 (reverse geocoding, 將地理座標 經緯度
轉為 地址 / 門牌
)。
Parameters
-
clientConfig
object 呼叫本geocodeReverse
function / method 時所欲套用之設定值。請參閱 Geocoding API-
clientConfig.address
string? 執行地址定位 (geocoding) 功能 : 輸入地址,轉換出經緯度。也就是呼叫 Map8 Geocoding API 時address
參數,請參照之。 -
clientConfig.latlng
string? 執行反地址定位 (reverse geocoding) 功能 : 輸入經緯度,轉換出地址。也就是呼叫 Map8 Geocoding API 時latlng
參數,請參照之。 -
clientConfig.postcode
(string | boolean)? 是否需要回傳三碼郵遞區號。 -
clientConfig.formatted_address_embed_postcode
(string | boolean)? 若上述 postcode 參數有被指定,則指定此參數以將三碼郵遞區號直接內嵌於 response 之 formatted_address 欄位內 (否則,三碼郵遞區號將另以 postcode 欄位回傳)。
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
nearestRoads
對道路進行反定址 (也就是由輸入之地理座標轉為道路),並獲取道路屬性。
Parameters
-
clientConfig
object 呼叫本roads
function / method 時所欲套用之設定值。請參閱 Roads API -
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
nearbyamenity
Parameters
-
clientConfig
object 呼叫本nearbyamenity
function / method 時所欲套用之設定值。請參閱 Premium / Housing API 文件-
clientConfig.query
string 為以地理座標之緯度
,然後逗號,
分隔,接著經度
之參數。此參數即用為呼叫 Map8 Nearby Amenity API 時的location
參數。 -
clientConfig.nearbyAmenityRadius
number? 指定限制之方圓距離。也就是呼叫 Map8 Nearby Amenity API 時radius
參數,請參照之。 -
clientConfig.nearbyAmenityLimit
number? 指定取回的資料筆數。 -
clientConfig.select
string? 以逗點分隔,正向表列所欲手動指定選取的類型。參見 Map8 Nearby Amenity API 與 生活機能相關之設施類型。 -
clientConfig.exclude
string? 以逗點分隔,負向表列所欲手動指定剔除的類型。參見 Map8 Nearby Amenity API 與 生活機能相關之設施類型。 -
clientConfig.geometry
boolean? 是否回傳區域之多邊形。此參數即用為呼叫 Map8 Nearby Amenity API 時的geometry
參數。
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
nearbyAmenityGeoJson
呼叫 nearbyamenity
function / method,並將結果轉為 GeoJSON 結構回傳。
- 範例 :
var map8Apikey = 'YOUR_KEY_HERE';
gomp.accessToken = map8Apikey;
var map = new gomp.Map({
container: 'map', // 地圖容器 ID
style: 'https://api.map8.zone/styles/go-life-maps-tw-style-std/style.json', // 地圖樣式檔案位置
maxBounds: [[105, 15], [138.45858, 33.4]], // 台灣地圖區域
center: [121.54885, 25.03625], // 初始中心座標,格式為 [lng, lat]
zoom: 16, // 初始 ZOOM LEVEL; [0-20, 0 為最小 (遠), 20 ;最大 (近)]
minZoom: 6, // 限制地圖可縮放之最小等級, 可省略, [0-19.99]
maxZoom: 19.99, // 限制地圖可縮放之最大等級, 可省略 [0-19.99]
pitch: 50, // 攝影機仰角, 可省略, [0-60]
bearing: 0, // 地圖角度, 可省略, [-180 ~ 180; 0 為正北朝上, 180 為正南朝上]
attributionControl: false
}).addControl(new gomp.AttributionControl({
compact: false
}).addControl(new gomp.NavigationControl());
var gompWebServiceJsClient = new GompWebServiceJsClient({
key: map8Apikey
});
gompWebServiceJsClient.nearbyAmenityGeoJson(
{
query: [lat, lng], // 中心點座標 (緯度, 經度)
nearbyAmenityRadius: 1, // 1 KM
},
function(nearbyDataGeoJson) {
console.log(nearbyDataGeoJson); // 轉出之 GeoJSON 資料結構如下
}
);
- 轉出之 GeoJSON 資料結構 :
{
type: 'FeatureCollection',
features: [{
type: 'Feature',
geometry: {...},
properties: {...}
},
..., {
type: 'Feature',
geometry: {...},
properties: {...}
}]
}
- 若 Map8 Nearby Amenity API 結果之
status
不為 "OK" (譬如 "ZERO_RESULTS"),則回傳之 GeoJSON 將仍為FeatureCollection
結構,但featues
為空陣列, i.e.,{type: "FeatureCollection", features: []}
。且,此時亦將 Map8 Nearby Amenity API 的原始結果傳入於呼叫者所提供之callback Handler
以供參照。
Parameters
-
clientConfig
object 參見nearbyamenity
function / method 之說明 -
callbackHandler
function 本 function / method 完成時,所呼叫之 callback handler。將帶入所呼叫的相對應 Map8 API 而得回之 GeoJSON 結構。
nearbynimby
Parameters
-
clientConfig
object 呼叫本nearbynimby
function / method 時所欲套用之設定值。請參閱 Premium / Housing API 文件-
clientConfig.query
string 為以地理座標之緯度
,然後逗號,
分隔,接著經度
之參數。此參數即用為呼叫 Map8 Nearby Nimby API 時的location
參數。 -
clientConfig.nearbyNimbyRadius
number? 指定限制之方圓距離。也就是呼叫 Map8 Nearby Nimby API 時radius
參數,請參照之。 -
clientConfig.nearbyNimbyLimit
number? 指定取回的資料筆數。 -
clientConfig.select
string? 以逗點分隔,正向表列所欲手動指定選取的類型。參見 Map8 Nearby Nimby API 與 鄰避設施相關之設施類型。 -
clientConfig.exclude
string? 以逗點分隔,負向表列所欲手動指定剔除的類型。參見 Map8 Nearby Nimby API 與 鄰避設施相關之設施類型。 -
clientConfig.geometry
boolean? 是否回傳區域之多邊形。此參數即用為呼叫 Map8 Nearby Nimby API 時的geometry
參數。
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
nearbyNimbyGeoJson
呼叫 nearbynimby
function / method,並將結果轉為 GeoJSON 結構回傳。
- 範例 :
gompWebServiceJsClient.nearbyNimbyGeoJson(
{
query: [lat, lng], // 中心點座標 (緯度, 經度)
nearbyNimbyRadius: 1, // 1 KM
},
function(nearbyDataGeoJson) {
console.log(nearbyDataGeoJson); // 轉出之 GeoJSON 資料結構如下
}
);
- 轉出之 GeoJSON 資料結構 :
{
type: 'FeatureCollection',
features: [{
type: 'Feature',
geometry: {...},
properties: {...}
},
..., {
type: 'Feature',
geometry: {...},
properties: {...}
}]
}
- 若 Map8 Nearby Nimby API 結果之
status
不為 "OK" (譬如 "ZERO_RESULTS"),則回傳之 GeoJSON 將仍為FeatureCollection
結構,但featues
為空陣列, i.e.,{type: "FeatureCollection", features: []}
。且,此時亦將 Map8 Nearby Nimby API 的原始結果傳入於呼叫者所提供之callback Handler
以供參照。
Parameters
-
clientConfig
object 參見nearbynimby
function / method 之說明 -
callbackHandler
function 本 function / method 完成時,所呼叫之 callback handler。將帶入所呼叫的相對應 Map8 API 而得回之 GeoJSON 結構。
schooldistricts
- See:
尊爵版
[Housing] School Districts API 文件 : https://www.map8.zone/map8-control-api-docs/school-districts-api-docs/map8-school-districts-api.html?key=您的key - See:
尊爵版
[Housing] School Districts API Explorer : https://www.map8.zone/api-explorer/#/%5BPreimum%5D%20%5BHousing%5D%20School%20Districts%20API
查詢所給定的地理經緯度座標之所屬學區 (國中、國小)。
- 範例 :
- 當然,請先於 HTML 內如下引用本 SDK 之 .js 檔案 :
-
<script type="text/javascript" src="https://api.map8.zone/maps/js/gomp-web-service-js-client.min.js?key=您的key"></script>
var map8Apikey = 'YOUR_KEY_HERE';
var gompWebServiceJsClient = new GompWebServiceJsClient({
key: map8Apikey
});
gompWebServiceJsClient.schooldistricts(
{
location: [25.037893, 121.548771], // 中心點座標 (緯度, 經度)
kind: "國小", // 篩選 `國小`
},
function(map8SchoolDistrictsRespText) {
console.log("Map8 Premium [Housing] School Districts API response text : ", map8SchoolDistrictsRespText);
map8SchoolDistrictsObj = JSON.parse(map8SchoolDistrictsRespText);
if (map8SchoolDistrictsObj.status === "OK") {
map8SchoolDistrictsObj.results.forEach(function(resultObj) {
console.log("Result object : ", resultObj);
});
}
}
);
- 上開範例於瀏覽器之 javascript console 將印出如下之結果 :
Map8 Premium [Housing] School Districts API response text : {"html_attribution":["台灣圖霸","研鼎智能","PAPAGO!"],"results":[{"city":"台北市","town":"大安區","name":"仁愛國小","kind":"國小"}],"status":"OK"}
Result object : {city: "台北市", town: "大安區", name: "仁愛國小", kind: "國小"}
Parameters
-
clientConfig
object 呼叫本schooldistricts
function / method 時所欲套用之設定值。請參閱尊爵版
[Housing] School Districts API 文件-
clientConfig.location
string 為以地理座標之緯度
,然後逗號,
分隔,接著經度
之參數。此參數即用為呼叫 Map8尊爵版
[Housing] School Districts API 時的location
參數。 -
clientConfig.kind
string? 指定欲篩選國小
或國中
。不給定此參數表示不進行篩選。此參數即呼叫 Map8尊爵版
[Housing] School Districts API 時kind
參數
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
metersToPixelsAtZoomLevel20
基於給定之中心點 (緯度座標),將所給地理長度 (單位為公尺),換算出圖面座標的長度 (單位為 pixels)
- 範例 :
// Circle
map.addLayer({
id: "circle",
type: "circle",
source: {
type: "geojson",
data: {
type: "FeatureCollection",
features: [{
type: "Feature",
geometry: {
type: "Point",
coordinates: [lng, lat]
}
}]
}
},
paint: {
"circle-radius": {
stops: [
[0, 0],
[20, gompWebServiceJsClient.metersToPixelsAtZoomLevel20(radius, lat)]
],
base: 2
},
"circle-color": colorIndex["blue"],
"circle-opacity": 0.2
}
});
map.addLayer({
id: "circle-text",
type: "symbol",
source: {
type: "geojson",
data: {
type: "FeatureCollection",
features: [{
type: "Feature",
geometry: {
type: "Point",
coordinates: [lng, lat]
}
}]
}
},
layout: {
'text-allow-overlap': true,
'text-field': '半徑 500 公尺範圍',
'text-font': ["Open Sans Regular"],
'text-offset': [0, 1],
'text-size': 15
},
paint: {
'text-color': colorIndex["blue"],
'text-halo-color': '#fff',
'text-halo-width': 2
}
});
Parameters
Returns number 所換算得之圖面座標長度 (單位為 pixels)
getDistanceFromLatLngInKm
求出兩地理座標之間的距離。
- 範例 :
var distInKm = gompWebServiceJsClient.getDistanceFromLatLngInKm(25.037893, 121.548771, 24.854564, 121.822903);
Parameters
Returns number 距離 (單位為公里)
distancematrix
Parameters
-
clientConfig
object 呼叫本distancematrix
function / method 時所欲套用之設定值。請參閱 DistanceMatrix API-
clientConfig.coordinates
string? 請參照 Map8 DistanceMatrix API 的起訖點座標組
參數。 -
clientConfig.profile
string 請參照 Map8 DistanceMatrix API 的交通工具
參數。 (optional, default"car"
) -
clientConfig.sourceIndices
string? 請參照 Map8 DistanceMatrix API 的sourceIndices
參數。 -
clientConfig.destinationIndices
string? 請參照 Map8 DistanceMatrix API 的destinationIndices
參數。 -
clientConfig.origins
string? 請參照 Map8 DistanceMatrix API 的origins
參數。 -
clientConfig.destinations
string? 請參照 Map8 DistanceMatrix API 的destinations
參數。 -
clientConfig.annotations
string? 請參照 Map8 DistanceMatrix API 的annotations
參數。 -
clientConfig.language
string? 請參照 Map8 DistanceMatrix API 的language
參數。
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
trip
Parameters
-
clientConfig
object 呼叫本trip
function / method 時所欲套用之設定值。請參閱 Trip API-
clientConfig.coordinates
string? 請參照 Map8 Trip API 的起訖點座標組
參數。 -
clientConfig.profile
string 請參照 Map8 Trip API 的交通工具
參數。 (optional, default"car"
) -
clientConfig.geometries
string? 請參照 Map8 Trip API 的geometries
參數。 -
clientConfig.overview
string? 請參照 Map8 Trip API 的overview
參數。 -
clientConfig.waypoints
string? 請參照 Map8 Trip API 的waypoints
參數。 -
clientConfig.source
string? 請參照 Map8 Trip API 的source
參數。 -
clientConfig.destination
string? 請參照 Map8 Trip API 的destination
參數。 -
clientConfig.roundtrip
string? 請參照 Map8 Trip API 的roundtrip
參數。
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
snapToRoads
Parameters
-
clientConfig
object 呼叫本directions
function / method 時所欲套用之設定值。請參閱 Snap to Roads API-
clientConfig.coordinates
string 請參照 Map8 Snap to Roads API 的起訖點座標組
參數。 -
clientConfig.profile
string 請參照 Map8 Snap to Roads API 的交通工具
參數。 (optional, default"car"
) -
clientConfig.overview
string? 請參照 Map8 Snap to Roads API 的overview
參數。 -
clientConfig.geometries
string? 請參照 Map8 Snap to Roads API 的geometries
參數。
-
-
callbackHandler
function 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。