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
-
clientConfigobject 呼叫本findplacefunction / method 時所欲套用之設定值。請參閱 Find Place API。-
clientConfig.inputstring 用以呼叫 Map8 Find Place API 之input參數。 -
clientConfig.inputtypestring 用以呼叫 Map8 Find Place API 之inputtype參數。 (optional, default"textquery") -
clientConfig.locationbiasstring? 為<緯度>,<經度>格式之字串 (逗號分隔)。用以呼叫 Map8 Find Place API 之input參數。
-
-
callbackHandlerfunction 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
placedetails
Parameters
-
clientConfigobject 呼叫本placedetailsfunction / method 時所欲套用之設定值。請參閱 Place Details API-
clientConfig.placeidstring 欲取得的地點之 ID (由之前呼叫之 Map8 台灣圖霸其他 API 所回傳;例如 Autocomplete API)。
-
-
callbackHandlerfunction 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
autocomplete
Parameters
-
clientConfigobject 呼叫本autocompletefunction / method 時所欲套用之設定值。請參閱 Place Autocomplete API-
clientConfig.querystring 使用者對欲查詢地點截至目前當下的輸入,用來透過 Map8 Place Autocomplete API 之input參數以獲得 autocomplete 的結果。 -
clientConfig.proxymityarray? 為一帶有兩個元素之陣列 : 第一個元素為地理座標之經度,第二個為緯度。此參數將轉而用為呼叫 Map8 Place Autocomplete API 時的location參數。 -
clientConfig.radiusnumber? 指定限制之方圓距離。也就是呼叫 Map8 Place Autocomplete API 時radius參數,請參照之。
-
-
callbackHandlerfunction 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
textsearch
Parameters
-
clientConfigobject 呼叫本textsearchfunction / method 時所欲套用之設定值。請參閱 Text Search API-
clientConfig.querystring 使用者對欲查詢地點截至目前當下的輸入,用來透過 Map8 Text Search API 之query參數以獲得 Text Search 的結果。 -
clientConfig.catstring? 指定欲搜尋周遭之地點類型。請參考 Map8 Text Search API。 -
clientConfig.proxymityarray? 為一帶有兩個元素之陣列 : 第一個元素為地理座標之經度,第二個為緯度。此參數將轉而用為呼叫 Map8 Text Search API 時的location參數。 -
clientConfig.radiusnumber? 指定限制之方圓距離。也就是呼叫 Map8 Text Search API 時radius參數,請參照之。
-
-
callbackHandlerfunction 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
nearbysearch
Parameters
-
clientConfigobject 呼叫本nearbysearchfunction / method 時所欲套用之設定值。請參閱 Nearby Search API-
clientConfig.querystring 為以地理座標之緯度,然後逗號,分隔,接著經度之參數。此參數即用為呼叫 Map8 Nearby Search API 時的location參數。 -
clientConfig.nearbyRadiusnumber? 指定限制之方圓距離。也就是呼叫 Map8 Nearby Search API 時的radius參數,請參照之。 -
clientConfig.nearbyLimitnumber? 指定取回的資料筆數。也就是呼叫 Map8 Nearby Search API 時的limit參數,請參照之。 -
clientConfig.nearbyCatstring? 列舉欲搜尋周遭之地點類型。也就是呼叫 Map8 Nearby Search API 時的cat參數,請參照之。 -
clientConfig.collection_idstring? 指定針對您的哪一份資料集做搜尋。也就是呼叫 Map8 Nearby Search API 時的collection_id參數,請參照之。
-
-
callbackHandlerfunction 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
directions
Parameters
-
clientConfigobject 呼叫本directionsfunction / method 時所欲套用之設定值。請參閱 Directions API-
clientConfig.querystring 格式為 :<起點之經度>,<起點之緯度>;<中途點之經度>,<中途點之緯度>;...;<終點之經度>,<終點之緯度>.json。乃以逗號分隔之<經度>,<緯度>座標為一組,然後以分號分隔,連接數組座標。第一組為起點,最後一組為終點。而中間的數組則為中途點 (waypoints)。 -
clientConfig.profilestring 指定用以規劃路徑的<交通工具>。也就是呼叫 Map8 Directions API 時<交通工具>參數,請參照之。
-
-
callbackHandlerfunction 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
geocode
地址定位 (geocoding, 將 地址 / 門牌 轉為地理座標 經緯度),與反地址定位 (reverse geocoding, 將地理座標 經緯度 轉為 地址 / 門牌)。
Parameters
-
clientConfigobject 呼叫本geocodeReversefunction / method 時所欲套用之設定值。請參閱 Geocoding API-
clientConfig.addressstring? 執行地址定位 (geocoding) 功能 : 輸入地址,轉換出經緯度。也就是呼叫 Map8 Geocoding API 時address參數,請參照之。 -
clientConfig.latlngstring? 執行反地址定位 (reverse geocoding) 功能 : 輸入經緯度,轉換出地址。也就是呼叫 Map8 Geocoding API 時latlng參數,請參照之。 -
clientConfig.postcode(string | boolean)? 是否需要回傳三碼郵遞區號。 -
clientConfig.formatted_address_embed_postcode(string | boolean)? 若上述 postcode 參數有被指定,則指定此參數以將三碼郵遞區號直接內嵌於 response 之 formatted_address 欄位內 (否則,三碼郵遞區號將另以 postcode 欄位回傳)。
-
-
callbackHandlerfunction 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
nearestRoads
對道路進行反定址 (也就是由輸入之地理座標轉為道路),並獲取道路屬性。
Parameters
-
clientConfigobject 呼叫本roadsfunction / method 時所欲套用之設定值。請參閱 Roads API -
callbackHandlerfunction 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
nearbyamenity
Parameters
-
clientConfigobject 呼叫本nearbyamenityfunction / method 時所欲套用之設定值。請參閱 Premium / Housing API 文件-
clientConfig.querystring 為以地理座標之緯度,然後逗號,分隔,接著經度之參數。此參數即用為呼叫 Map8 Nearby Amenity API 時的location參數。 -
clientConfig.nearbyAmenityRadiusnumber? 指定限制之方圓距離。也就是呼叫 Map8 Nearby Amenity API 時radius參數,請參照之。 -
clientConfig.nearbyAmenityLimitnumber? 指定取回的資料筆數。 -
clientConfig.selectstring? 以逗點分隔,正向表列所欲手動指定選取的類型。參見 Map8 Nearby Amenity API 與 生活機能相關之設施類型。 -
clientConfig.excludestring? 以逗點分隔,負向表列所欲手動指定剔除的類型。參見 Map8 Nearby Amenity API 與 生活機能相關之設施類型。 -
clientConfig.geometryboolean? 是否回傳區域之多邊形。此參數即用為呼叫 Map8 Nearby Amenity API 時的geometry參數。
-
-
callbackHandlerfunction 於本 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
-
clientConfigobject 參見nearbyamenityfunction / method 之說明 -
callbackHandlerfunction 本 function / method 完成時,所呼叫之 callback handler。將帶入所呼叫的相對應 Map8 API 而得回之 GeoJSON 結構。
nearbynimby
Parameters
-
clientConfigobject 呼叫本nearbynimbyfunction / method 時所欲套用之設定值。請參閱 Premium / Housing API 文件-
clientConfig.querystring 為以地理座標之緯度,然後逗號,分隔,接著經度之參數。此參數即用為呼叫 Map8 Nearby Nimby API 時的location參數。 -
clientConfig.nearbyNimbyRadiusnumber? 指定限制之方圓距離。也就是呼叫 Map8 Nearby Nimby API 時radius參數,請參照之。 -
clientConfig.nearbyNimbyLimitnumber? 指定取回的資料筆數。 -
clientConfig.selectstring? 以逗點分隔,正向表列所欲手動指定選取的類型。參見 Map8 Nearby Nimby API 與 鄰避設施相關之設施類型。 -
clientConfig.excludestring? 以逗點分隔,負向表列所欲手動指定剔除的類型。參見 Map8 Nearby Nimby API 與 鄰避設施相關之設施類型。 -
clientConfig.geometryboolean? 是否回傳區域之多邊形。此參數即用為呼叫 Map8 Nearby Nimby API 時的geometry參數。
-
-
callbackHandlerfunction 於本 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
-
clientConfigobject 參見nearbynimbyfunction / method 之說明 -
callbackHandlerfunction 本 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
-
clientConfigobject 呼叫本schooldistrictsfunction / method 時所欲套用之設定值。請參閱尊爵版[Housing] School Districts API 文件-
clientConfig.locationstring 為以地理座標之緯度,然後逗號,分隔,接著經度之參數。此參數即用為呼叫 Map8尊爵版[Housing] School Districts API 時的location參數。 -
clientConfig.kindstring? 指定欲篩選國小或國中。不給定此參數表示不進行篩選。此參數即呼叫 Map8尊爵版[Housing] School Districts API 時kind參數
-
-
callbackHandlerfunction 於本 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
-
clientConfigobject 呼叫本distancematrixfunction / method 時所欲套用之設定值。請參閱 DistanceMatrix API-
clientConfig.coordinatesstring? 請參照 Map8 DistanceMatrix API 的起訖點座標組參數。 -
clientConfig.profilestring 請參照 Map8 DistanceMatrix API 的交通工具參數。 (optional, default"car") -
clientConfig.sourceIndicesstring? 請參照 Map8 DistanceMatrix API 的sourceIndices參數。 -
clientConfig.destinationIndicesstring? 請參照 Map8 DistanceMatrix API 的destinationIndices參數。 -
clientConfig.originsstring? 請參照 Map8 DistanceMatrix API 的origins參數。 -
clientConfig.destinationsstring? 請參照 Map8 DistanceMatrix API 的destinations參數。 -
clientConfig.annotationsstring? 請參照 Map8 DistanceMatrix API 的annotations參數。 -
clientConfig.languagestring? 請參照 Map8 DistanceMatrix API 的language參數。
-
-
callbackHandlerfunction 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
trip
Parameters
-
clientConfigobject 呼叫本tripfunction / method 時所欲套用之設定值。請參閱 Trip API-
clientConfig.coordinatesstring? 請參照 Map8 Trip API 的起訖點座標組參數。 -
clientConfig.profilestring 請參照 Map8 Trip API 的交通工具參數。 (optional, default"car") -
clientConfig.geometriesstring? 請參照 Map8 Trip API 的geometries參數。 -
clientConfig.overviewstring? 請參照 Map8 Trip API 的overview參數。 -
clientConfig.waypointsstring? 請參照 Map8 Trip API 的waypoints參數。 -
clientConfig.sourcestring? 請參照 Map8 Trip API 的source參數。 -
clientConfig.destinationstring? 請參照 Map8 Trip API 的destination參數。 -
clientConfig.roundtripstring? 請參照 Map8 Trip API 的roundtrip參數。
-
-
callbackHandlerfunction 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。
snapToRoads
Parameters
-
clientConfigobject 呼叫本directionsfunction / method 時所欲套用之設定值。請參閱 Snap to Roads API-
clientConfig.coordinatesstring 請參照 Map8 Snap to Roads API 的起訖點座標組參數。 -
clientConfig.profilestring 請參照 Map8 Snap to Roads API 的交通工具參數。 (optional, default"car") -
clientConfig.overviewstring? 請參照 Map8 Snap to Roads API 的overview參數。 -
clientConfig.geometriesstring? 請參照 Map8 Snap to Roads API 的geometries參數。
-
-
callbackHandlerfunction 於本 function / method 完成時所呼叫之 callback handler. 將傳入所呼叫之 Map8 API 之 HTTP response 內容。