日常使用西門子S7-1200系列PLC時(shí),需要查看PLC內(nèi)部數(shù)據(jù),通常都是用觸摸屏或者上位機(jī)監(jiān)控,或者直接使用博途在線查看。但是當(dāng)遇到觸摸屏或者上位軟件未關(guān)聯(lián)的變量,且本機(jī)未安裝博途的情況,問(wèn)題就會(huì)比較復(fù)雜了,通常需要重新配置上位機(jī)參數(shù),或者借助第三方工具,甚至需要重新安裝博途來(lái)解決。這時(shí)候,如果在PLC程序設(shè)計(jì)的時(shí)候,啟用了Web服務(wù)器,問(wèn)題就會(huì)比較簡(jiǎn)單了。
首先,使用博途打開PLC源代碼,選中CPU模塊,點(diǎn)擊右鍵,點(diǎn)擊屬性,彈出設(shè)置界面,在”常規(guī)“窗口左側(cè)列表框中選擇”Web服務(wù)器“,勾選"在此設(shè)備的所有模塊上激活Web服務(wù)器",同時(shí)取消“僅允許通過(guò)HTTPS訪問(wèn)”。重新編譯后下載。
打開計(jì)算機(jī)上的網(wǎng)頁(yè)瀏覽器,在地址欄輸入http://ww.xx.yy.zz(此處為PLC的實(shí)際IP地址,如192.168.1.10,所有符號(hào)為英文狀態(tài)輸入),打開 S7-1200的 標(biāo)準(zhǔn) Web 頁(yè)面,如下圖 所示。
變量狀態(tài)頁(yè)面可以查看任何 CPU 中的 I/O 或者存儲(chǔ)器數(shù)據(jù),可以輸入絕對(duì)地址(例如:MB0、I0.0、Q1.0等)、PLC 變量名或者數(shù)據(jù)塊中的變量。可以選擇顯示的數(shù)據(jù)類型的格式;可以顯示或者更改當(dāng)前值。如下圖所示。
到此為止,基本已經(jīng)解決了之前遇到的問(wèn)題,但是,進(jìn)一步探索后,會(huì)發(fā)現(xiàn)“Web服務(wù)器”還有更強(qiáng)大的功能,可以創(chuàng)建融入 PLC 數(shù)據(jù)的特定的 HTML 頁(yè)面。
選擇一款HTML編輯器,如Microsoft Frontpage,Dreamweaver或VScode等,創(chuàng)建用戶定義的 Web 頁(yè)面,使用AWP 命令包含在 HTML 代碼的 HTML 注釋中(AWP 命令是西門子提供用于訪問(wèn) CPU 信息的固定命令集)。
如需顯示變量,語(yǔ)法為 :=<Varname>: ,Varname為 PLC 變量,使用雙引號(hào)將變量名稱括起來(lái)即可,如下圖所示。
<p>Actual Value: :="VarName1":</p>
如需寫入變量,則首先需要在HTML注釋中添加。
<!-- AWP_In_Variable Name='"VarName1"' -->
然后添加輸入框和確認(rèn)按鈕等元素即可。
<input type="text" id="value1" name='"VarName1"' size="5">
<input type="submit" value="Set a new Value" style="width: 200px">
頁(yè)面編輯完成后,打開博途,在 Web 服務(wù)器的"用戶自定義頁(yè)面"中進(jìn)行配置。注意需要點(diǎn)擊生成塊方可生效。
執(zhí)行 WWW 指令,在主程序直接調(diào)用,也可通過(guò)程序邏輯可控制何時(shí)啟用自定義頁(yè)面。
用戶定義的 Web 頁(yè)面塊后和其它的程序塊一樣,將成為程序的一部分,按照正常過(guò)程將下載到 CPU即可。再次打開瀏覽器,輸入PLC的IP地址后,即可看到用戶編寫的HTML頁(yè)面。由于采用了標(biāo)準(zhǔn)的HTML協(xié)議,用戶自定義的頁(yè)面也可以使用處于同一網(wǎng)段下的手機(jī)訪問(wèn),如果局域網(wǎng)配置了VPN,甚至可以通過(guò)外網(wǎng),遠(yuǎn)程操作,因此,為了防止 PLC 被惡意攻擊,或者出現(xiàn)未經(jīng)授權(quán)的操作,官方還是建議勾選“僅允許通過(guò) HTTPS 訪問(wèn)”。
一個(gè)典型的HTML頁(yè)面示例
<!-- AWP_In_Variable Name='"VarName1"' -->
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type" />
<title>Web page demo - Login - Main page</title>
<!-- Via "<link...>" a CSS file is referenced which contains all information on the optical design of the web -->
<!-- <link rel="stylesheet" type="text/css" href="/CSS/S7Web.css"> --> <!-- S7Web.css is used in S7-1500 CPUs and S7-1200 FW2.2 -->
</head>
<body onload="loginCheck()"> <!-- check login with each refresh of the website -->
<!-- example for write value to CPU -->
<form method="post" action="" onsubmit="">
<p> </p>
<p>
<input type="text" id="value1" name='"VarName1"' size="5">
<input type="submit" value="Set a new Value" style="width: 200px">
</p>
</form>
<p>Actual Value: :="VarName1":</p>
<!-- BEGIN Login Area -->
<iframe id="WebserverIFrame" name="WebserverIFrameName" src="/Portal/Portal.mwsl" style="display:none"></iframe>
<!-- area for login -->
<div id="loginBox" class="Login_Area"></div> <!-- "Login_Area" is defined in S7Web.css for S7-1500 CPUs and S7-1200 FW2.2-->
<!-- function for check login -->
<script type="text/javascript">
function loginCheck() {
var iFrameElement = document.getElementById('WebserverIFrame');
var loginForm = iFrameElement.contentWindow.document.getElementById('loginForm'); //S7-1200 FW4.0
if (loginForm == null) {
loginForm = iFrameElement.contentWindow.document.getElementById('Login_Area_Form'); //S7-1200 FW2.2 and S7-1500 FW1.5
}
if(loginForm) {
loginForm.setAttribute("data-ajax", "false");
document.getElementById('loginBox').innerHTML = loginForm.parentNode.innerHTML;
document.getElementsByName("Redirection")[0]["value"] = window.location.href.split("?")[0];
}
var logoutForm = iFrameElement.contentWindow.document.getElementById('logoutForm'); //S7-1200 FW4.0
if(logoutForm == null) {
logoutForm = iFrameElement.contentWindow.document.getElementById('logout_form'); //S7-1200 FW2.2
}
if(logoutForm == null) {
logoutForm = iFrameElement.contentWindow.document.getElementById('Logout_Area_Form'); //S7-1500 FW1.5
}
if(logoutForm) {
logoutForm.setAttribute("data-ajax", "false");
document.getElementById('loginBox').innerHTML = logoutForm.parentNode.innerHTML;
document.getElementsByName("Redirection")[0]["value"] = window.location.href.split("?")[0]; // use the current webpage as redirection - remove additonal post values attached by "?" if necessary
}
}
</script>
<!-- END Login Area -->
</body>
</html>
(來(lái)源于西門子官方文檔)
合理利用Web服務(wù)器,結(jié)合前端開發(fā)技術(shù),可以將自定義頁(yè)面設(shè)計(jì)成組態(tài)界面,替代組態(tài)軟件和觸摸屏,將邏輯代碼和操作界面全部下載存儲(chǔ)到PLC,只需要瀏覽器,即可實(shí)現(xiàn)任意客戶端對(duì)PLC設(shè)備的操控。
使用 API 網(wǎng)關(guān)作為內(nèi)部服務(wù)面向客戶端的單一入口,是一種普遍采用的架構(gòu)模式。企業(yè)組織通過(guò)良好定義的 API 將內(nèi)部系統(tǒng)向內(nèi)部和外部用戶公開,通常都會(huì)采用 API 網(wǎng)關(guān)來(lái)處理橫向的關(guān)注點(diǎn),包括訪問(wèn)控制、速率限制、負(fù)載均衡等等,來(lái)實(shí)現(xiàn)安全可控的 API 開放。而被廣泛實(shí)踐的微服務(wù)架構(gòu)在提供高度靈活性和彈性的同時(shí),也給 API 網(wǎng)關(guān)帶來(lái)了更多的挑戰(zhàn)。
阿里云云服務(wù)總線(Cloud Service Bus)新推出微服務(wù)網(wǎng)關(guān)服務(wù)(CSB Micro Gateway),針對(duì)微服務(wù)架構(gòu)下 API 開放的特點(diǎn),提供能與微服務(wù)環(huán)境的治理策略無(wú)縫銜接的網(wǎng)關(guān)服務(wù),實(shí)現(xiàn)高效的微服務(wù) API 開放。
相信許多人都熟悉 API 網(wǎng)關(guān)的概念。作為內(nèi)部服務(wù)面向客戶端的單一入口,API 網(wǎng)關(guān)有兩個(gè)最典型的作用:
1、內(nèi)外解耦:對(duì)客戶端屏蔽內(nèi)部服務(wù)的動(dòng)態(tài)多樣化實(shí)現(xiàn)細(xì)節(jié),如技術(shù)框架、拆分粒度、接口結(jié)構(gòu)、實(shí)例狀態(tài)等
2、切面控制:讓內(nèi)部服務(wù)能專注在業(yè)務(wù)邏輯上,集中處理橫向的關(guān)注點(diǎn),如路由、安全、限流、日志、監(jiān)控等
實(shí)際使用中,對(duì)應(yīng) API 網(wǎng)關(guān)所在位置和針對(duì)場(chǎng)景的不同,可分成兩種類型:
1、企業(yè)級(jí)網(wǎng)關(guān):位于企業(yè)組織的外圍,面對(duì)外部的 API 消費(fèi)者或服務(wù)提供者。通常將企業(yè)自身的數(shù)據(jù)和能力 API 化,對(duì)外開放,也有允許外部服務(wù)入駐的情況。總的來(lái)說(shuō),以支撐服務(wù)入駐、服務(wù)運(yùn)營(yíng)和服務(wù)門戶場(chǎng)景為主,側(cè)重解決管理和運(yùn)營(yíng)挑戰(zhàn)。
2、微網(wǎng)關(guān):位于企業(yè)組織內(nèi)部,面對(duì)內(nèi)部的 API 消費(fèi)者,可以看做是內(nèi)部服務(wù)之前的最后一道防線。通常按內(nèi)部服務(wù)的業(yè)務(wù)劃分、物理環(huán)境以及技術(shù)形態(tài)的差異,設(shè)立多個(gè)微網(wǎng)關(guān)來(lái)分別負(fù)責(zé)。總的來(lái)說(shuō),以提供快捷開放、策略控制、服務(wù)適配能力為主,側(cè)重提升開發(fā)和運(yùn)維效率。
實(shí)際上,企業(yè)級(jí)網(wǎng)關(guān)和微網(wǎng)關(guān)只是兩種使用類型,在關(guān)注的網(wǎng)關(guān)特性上有不同側(cè)重,實(shí)踐上并非一定需要不同的產(chǎn)品或兩套獨(dú)立的部署。
API 網(wǎng)關(guān)流量特征
企業(yè)級(jí)網(wǎng)關(guān)處理的一定是 API 消費(fèi)方和后端服務(wù)之間的流量,也稱為南北流量;微網(wǎng)關(guān)一般也只是處理南北流量,當(dāng)負(fù)責(zé)的服務(wù)本身缺乏注冊(cè)發(fā)現(xiàn)機(jī)制,例如運(yùn)行在傳統(tǒng)應(yīng)用服務(wù)器上的不同應(yīng)用,當(dāng)相互調(diào)用需要一個(gè)切面管控時(shí),可以用微網(wǎng)關(guān)來(lái)統(tǒng)一處理服務(wù)間流量,也稱為東西流量。
在這里我們做個(gè)定義:用于微服務(wù)環(huán)境的微網(wǎng)關(guān),稱作微服務(wù)網(wǎng)關(guān)。開源產(chǎn)品中,Kong、Netflix Zuul、Spring Cloud Gateway、Ambassador 等都可以用來(lái)作為微服務(wù)網(wǎng)關(guān),其中 Ambassador 是基于 Envoy 構(gòu)建的,屬于 K8s 原生微服務(wù)網(wǎng)關(guān)。那么,微服務(wù)網(wǎng)關(guān)有什么特別的地方,需要解決什么問(wèn)題呢?
在微服務(wù)架構(gòu)模式下,小型化、自包含、相對(duì)隔離、隨時(shí)可運(yùn)行的應(yīng)用形態(tài),帶來(lái)了極大的靈活性和彈性。但是微服務(wù)架構(gòu)高度動(dòng)態(tài)的服務(wù)分布和復(fù)雜依賴的特點(diǎn)也帶來(lái)了很多挑戰(zhàn):鏈路復(fù)雜,定位故障點(diǎn)困難;一個(gè)服務(wù)的故障可能帶來(lái)雪崩效應(yīng);端到端的測(cè)試難以實(shí)施等等。對(duì)應(yīng)這些問(wèn)題,出現(xiàn)了一系列典型的服務(wù)治理手段:
在實(shí)現(xiàn)上,這些橫向的治理能力大都需要微服務(wù)應(yīng)用配合對(duì)接,這些公共機(jī)制的實(shí)現(xiàn)可以通過(guò)微服務(wù)框架(例如 Spring Cloud、Dubbo)來(lái)提供,讓應(yīng)用開發(fā)能專注在業(yè)務(wù)邏輯上。或者采用服務(wù)網(wǎng)格(Service Mesh)模式,從應(yīng)用實(shí)現(xiàn)解耦,付出一定性能代價(jià),在應(yīng)用本地的反向代理組件(Sidecar)中轉(zhuǎn)發(fā)流量并處理所有這些邏輯。
由于微服務(wù)的調(diào)用方可能在微服務(wù)環(huán)境內(nèi)部,也可能在微服務(wù)環(huán)境外部,這些橫向的治理能力,有時(shí)也需要同時(shí)作用到微服務(wù)環(huán)境與外部之間的南北流量上。這時(shí)就需要網(wǎng)關(guān)的配合。
以服務(wù)發(fā)現(xiàn)和流量管理這兩個(gè)策略為例,考察兩個(gè)非常普遍的典型場(chǎng)景:
場(chǎng)景一:流量正確路由到可用的微服務(wù)實(shí)例
場(chǎng)景二:同步在網(wǎng)關(guān)上執(zhí)行金絲雀發(fā)布灰度規(guī)則
當(dāng)一個(gè)微服務(wù)的實(shí)例增加、減少,或者不可用時(shí),網(wǎng)關(guān)要能把流量正確地路由到可用的微服務(wù)實(shí)例上;當(dāng)微服務(wù)更新版本,采用金絲雀發(fā)布的時(shí)候,灰度策略不但需要在微服務(wù)環(huán)境內(nèi)的東西流量上生效,在網(wǎng)關(guān)上也要執(zhí)行相同的灰度策略。
很明顯,網(wǎng)關(guān)進(jìn)行這樣的配合,如果采用人工操作的方式的話,會(huì)帶來(lái)很多問(wèn)題:首先是實(shí)時(shí)性差,導(dǎo)致網(wǎng)關(guān)流量路由的失效和錯(cuò)誤幾率增大;其次是運(yùn)維和管理的壓力,對(duì)應(yīng)關(guān)系容易錯(cuò)亂,操作可能失誤錯(cuò)漏,帶來(lái)很大風(fēng)險(xiǎn)。
設(shè)想一下,要校對(duì)實(shí)例的可用狀態(tài),然后在網(wǎng)關(guān)或網(wǎng)關(guān)后的負(fù)載上掛載、卸載對(duì)應(yīng)端點(diǎn);或在金絲雀發(fā)布、中斷、回滾時(shí),在網(wǎng)關(guān)上進(jìn)行對(duì)應(yīng)的灰度判定和路由配置。如果微服務(wù)稍微多些,運(yùn)維和管理的難度、風(fēng)險(xiǎn)都是顯而易見的。
因此,微服務(wù)的網(wǎng)關(guān),需要能夠和微服務(wù)環(huán)境的治理能力自動(dòng)化聯(lián)動(dòng)。對(duì)應(yīng)上面的例子,就是要求:能夠自動(dòng)基于微服務(wù)環(huán)境的服務(wù)發(fā)現(xiàn)策略,將服務(wù)請(qǐng)求動(dòng)態(tài)地路由到可用的微服務(wù)實(shí)例上;能夠在微服務(wù)環(huán)境進(jìn)行金絲雀發(fā)布時(shí),自動(dòng)同步配合執(zhí)行對(duì)應(yīng)的灰度策略。
也就是說(shuō),需要微服務(wù)網(wǎng)關(guān)和微服務(wù)環(huán)境在服務(wù)治理策略上能夠無(wú)縫銜接,自動(dòng)配合生效。對(duì)這個(gè)要求的支持,也正是新發(fā)布的微服務(wù)網(wǎng)關(guān)服務(wù)(CSB Micro Gateway)的核心特性之一。
使用阿里云云服務(wù)總線(Cloud Service Bus)新發(fā)布的微服務(wù)網(wǎng)關(guān)服務(wù)(CSB Micro Gateway),用戶可以為目標(biāo)微服務(wù)環(huán)境快速創(chuàng)建微服務(wù)網(wǎng)關(guān)。指定注冊(cè)中心后,微服務(wù)網(wǎng)關(guān)就可以動(dòng)態(tài)感知微服務(wù)節(jié)點(diǎn)的變更,將 API 請(qǐng)求動(dòng)態(tài)路由到后端微服務(wù)。通過(guò)控制臺(tái)可以基于注冊(cè)中心的服務(wù)列表快速發(fā)布 API,支持服務(wù)路由規(guī)則的動(dòng)態(tài)變更生效,可以方便地管理限流、鑒權(quán)、后端負(fù)載均衡等控制策略,提供完整的 API 訪問(wèn)日志和統(tǒng)計(jì)報(bào)告,并且支持和后端微服務(wù)治理策略的聯(lián)動(dòng),例如配合微服務(wù)應(yīng)用的升級(jí)發(fā)布自動(dòng)執(zhí)行灰度路由策略。
新發(fā)布的微服務(wù)網(wǎng)關(guān)服務(wù):https://help.aliyun.com/document_detail/156009.html
微服務(wù)網(wǎng)關(guān)服務(wù)(CSB Micro Gateway)是阿里云上的托管式微服務(wù)網(wǎng)關(guān)服務(wù),提供高度的可用性和穩(wěn)定性,基于開源引擎,支持開源配置方式。將陸續(xù)提供多種微服務(wù)網(wǎng)關(guān)引擎的托管服務(wù),以滿足不同場(chǎng)景的側(cè)重需求和使用偏好。
公測(cè)首先推出基于 Zuul 的服務(wù)版本,支持 Eureka 注冊(cè)中心以及 Spring Cloud 微服務(wù)框架。將很快支持基于 Kong、Ambassador 等引擎的托管服務(wù)將很快推出 Nacos 等多種微服務(wù)注冊(cè)中心的支持,將陸續(xù)支持 Dubbo、gPRC 等多種微服務(wù)框架將陸續(xù)提供豐富的控制策略,包括各種鑒權(quán)方式、流量控制、安全防護(hù)、服務(wù)組裝變換等等,以及支持用戶自定義實(shí)現(xiàn)的策略將陸續(xù)補(bǔ)充企業(yè)級(jí)網(wǎng)關(guān)所側(cè)重的一些開放管控能力,例如 API 標(biāo)準(zhǔn)規(guī)范定義、API 文檔、API 測(cè)試調(diào)用、多版本管理等
歡迎試用,敬請(qǐng)密切關(guān)注微服務(wù)網(wǎng)關(guān)的發(fā)布更新!
微服務(wù)網(wǎng)關(guān)控制臺(tái)入口(無(wú)需開通,直接使用):https://microgw.console.aliyun.com/
微服務(wù)網(wǎng)關(guān)使用說(shuō)明 :https://help.aliyun.com/document_detail/156009.html
前段時(shí)間,給大家介紹了WeServer在內(nèi)網(wǎng)中離線發(fā)布全國(guó)影像及高程DEM數(shù)據(jù)并在OsgEarth中調(diào)用的方法和在開源三維地球Cesium中如何離線加載衛(wèi)星影像及高程DEM數(shù)據(jù)的方法。
其中,OsgEarth是一個(gè)基于桌面端的三維地球開源平臺(tái),而Cesium則是基于Web端的三維地球開源平臺(tái)。
同樣地,我們也可以基于二維的開源平臺(tái)并結(jié)合WeServer在內(nèi)網(wǎng)中離線發(fā)布全國(guó)衛(wèi)星影像。
關(guān)于二維的WebGIS開源平臺(tái),我們推薦OpenLayers和MapBox兩種。
其中,二維開源平臺(tái)OpenLayers在內(nèi)網(wǎng)中離線加載衛(wèi)星影像的方法已經(jīng)作過(guò)分享了,現(xiàn)在我們?cè)賮?lái)分享一下MapBox在內(nèi)網(wǎng)中加載顯示W(wǎng)eServer發(fā)布的離線衛(wèi)星影像的方法。
在開始之前,需要先準(zhǔn)備離線數(shù)據(jù)發(fā)布軟件、離線衛(wèi)星影像示例數(shù)據(jù)、MapBox開發(fā)源碼和本機(jī)IP地址等。
地圖發(fā)布軟件:需要在內(nèi)網(wǎng)發(fā)布離線衛(wèi)星影像,請(qǐng)確保地圖發(fā)布服務(wù)中間件版本為4.0.5以上,如果低于該版本,請(qǐng)通過(guò)私信回復(fù)"中間件"免費(fèi)獲取最新版本安裝包,也可以直接在官網(wǎng)下載。
離線示例數(shù)據(jù):本文提供的離線示例數(shù)據(jù)包括墨卡托投影和WGS84投影的衛(wèi)星影像與地名標(biāo)簽數(shù)據(jù),由于這里主要是為了進(jìn)行功能性演示,因此只提示前10級(jí)影像數(shù)據(jù)。
衛(wèi)星影像示例數(shù)據(jù)
另外,由于MapBox默認(rèn)僅支持墨卡托投影數(shù)據(jù),不支持WGS84坐標(biāo)系經(jīng)緯度正投的影像數(shù)據(jù),因此這里只需要從百度網(wǎng)盤的共享數(shù)據(jù)中下載"SatelliteForMercator"和"LabelFroMercator"文件夾中的數(shù)據(jù)即可。
私信“示例數(shù)據(jù)”獲取示例數(shù)據(jù)。
MapBox開發(fā)源碼:MapBox源碼可以從MapBox官網(wǎng)下載最新版,但由于下載的方法略微有點(diǎn)復(fù)雜(后面會(huì)介紹方法),因此也可以通過(guò)私信回復(fù)"MapBox"獲取MapBox開發(fā)源碼文件。
本機(jī)IP地址:由于會(huì)用到本機(jī)IP作為訪問(wèn)地址,可以通過(guò)在DOS窗口中運(yùn)行"IPConfig"命令或其它方式獲取本機(jī)IP地址以備用,如下圖所示。
獲取本機(jī)IP地址
由于MapBox的源碼下載略微有點(diǎn)復(fù)雜,我們有必要在這里為大家分享一下它的下載的方法,如果你已經(jīng)從百度網(wǎng)盤下載了MapBox源碼,請(qǐng)略過(guò)本節(jié)。
首先打開MapBox官網(wǎng),然后點(diǎn)擊"Documentation\Mapbox GL js",如下圖所示。
MapBox官網(wǎng)
在顯示的頁(yè)面點(diǎn)擊"Install"按鈕,如下圖所示。
開始下載安裝
從顯示的提示可以看出,這里下載代碼需要執(zhí)行一個(gè)CMD命令"npm install mapbox-gl --save"進(jìn)行下載,如下圖所示。
下載方法
打開CMD命令窗口,并進(jìn)入到需要下載保存的目錄路徑,這里我們將下載內(nèi)容保存到"F:\MapBox"目錄,如下圖所示。
執(zhí)行下載
執(zhí)行下載后的結(jié)果,如下圖所示。
下載結(jié)果
CMD命令窗口中的警告信息提示缺少"package.json"文件,我們可以通過(guò)執(zhí)行"npm init -f"命令,將會(huì)在目錄中自動(dòng)生成該文件,如下圖所示。
生成PACKAGE文件
成功生成了"package.json"文件之后,又提示缺少了描述信息和"repository"字段,如下圖所示。
警告提示信息
我們打開"package.json"文件,發(fā)現(xiàn)"description"字段為空,且沒(méi)有"repository"字段,如下圖所示。
PACKAGE原文件內(nèi)容
為了避免出現(xiàn)警告信息,可以為"description"添加描述內(nèi)容,并添加"repository"字段。
"repository"用于指定你的代碼存放的地方,這個(gè)對(duì)希望貢獻(xiàn)的人有幫助。
如果git倉(cāng)庫(kù)在github上,那么npm docs命令能找到你,如下所示。
"repository" :
{ "type" : "git"
, "url" : "http://github.com/isaacs/npm.git"
}
URL應(yīng)該是公開的(即便是只讀的)能直接被未經(jīng)過(guò)修改的版本控制程序處理的url。不應(yīng)該是一個(gè)html的項(xiàng)目頁(yè)面,因?yàn)樗墙o計(jì)算機(jī)看的。
這里,我們只需要將項(xiàng)目設(shè)置為私有即可,即在文檔中添加"private"字段并設(shè)置為"true",如下圖所示。
修改PACEAGE文件
在"package.json"文件中設(shè)置完成并保存后,我們?cè)俅螆?zhí)行"npm install mapbox-gl --save"命令,就不會(huì)再顯示警告信息了,如下圖所示。
執(zhí)行結(jié)果
以上就是MapBox源碼下載的全過(guò)程,后面我們會(huì)專門說(shuō)明如何在IIS中部署MapBox源碼的方法。
軟件的安裝與離線衛(wèi)星影像的發(fā)布方法,請(qǐng)參閱"全球衛(wèi)星影像離線發(fā)布神器《水經(jīng)注地圖發(fā)布服務(wù)中間件4.0》正式發(fā)布"一文。
由于MapBox是二維應(yīng)用,因此這里不需要發(fā)布高程。
但需要注意的是,要將投影設(shè)置為"Web_Mercator",且確保設(shè)置的端口號(hào)沒(méi)有被其它程序占用,如下圖所示。
安裝配置
安裝完成后,會(huì)顯示如下圖所示信息。
安裝完成
打開Windows任務(wù)管理器,如果WeServer服務(wù)的狀態(tài)顯示"正在運(yùn)行",則說(shuō)明中間件服務(wù)安裝成功并已經(jīng)正常運(yùn)行,如下圖所示。
服務(wù)運(yùn)行正常
WeServer成功發(fā)布后,接下來(lái)我們需要將下載的MapBox在本地進(jìn)行部署。
我們通過(guò)IIS對(duì)MapBox源碼進(jìn)行本地化部署,如果你對(duì)IIS網(wǎng)站部署非常熟悉,請(qǐng)略過(guò)本節(jié)。
MapBox源碼解壓之后,如下圖所示。
MapBox源碼目錄
在Windows控制面板中打開"管理工具",如下圖所示。
管理工具
打開IIS網(wǎng)站管理器,如下圖所示。
打開IIS
在"網(wǎng)站"樹節(jié)點(diǎn)單擊鼠標(biāo)右鍵,然后選擇"添加網(wǎng)站"菜單,如下圖所示。
添加網(wǎng)站
網(wǎng)站名稱可以任意取,這里我們?nèi)∶麨?#34;MapBox",物理路徑設(shè)置為MapBox源碼的"node_modules\mapbox-gl"文件目錄,并將端口號(hào)設(shè)置為沒(méi)有被其它程序或Web站點(diǎn)所占用的端口號(hào),這里默認(rèn)為"80",如下圖所示。
配置網(wǎng)站參數(shù)
配置完成并點(diǎn)擊"確定"按鈕之后完成MapBox源碼的本地網(wǎng)站配置,如下圖所示。
完成配置
現(xiàn)在,MapBox源碼在本地就離線部署好了,但還需要新建一個(gè)衛(wèi)星影像的離線加載顯示頁(yè)面才可以進(jìn)行訪問(wèn)。
在MapBox源碼目錄"F:\MapBox\node_modules\mapbox-gl"中新建一個(gè)"SampleForMercator.html"Web頁(yè)面頁(yè)文件,如下圖所示。
新建Web頁(yè)面文件
在"SampleForMercator.html"網(wǎng)站頁(yè)面文件中添加衛(wèi)星影像與地名標(biāo)簽加載代碼,如下圖所示。
添加影像加載代碼
通過(guò)關(guān)注私信回復(fù)"MapBox"可獲取MapBox源碼文件,解壓后在目錄中,已經(jīng)為你提供了"SampleForMercator.html"源碼文件,但需要特別注意的是需要將IP地址改為本機(jī)IP地址,前文我們已經(jīng)提到過(guò)了獲取本機(jī)IP的方法。
打開網(wǎng)址"http://192.168.0.5/SampleForMercator.html",可以顯示加載本地影像如下圖所示。
WGS84衛(wèi)星影像加載效果
至此,MapBox在內(nèi)網(wǎng)中加載顯示W(wǎng)eServer發(fā)布的離線地圖的目的就達(dá)到了。
這樣一來(lái),當(dāng)前這臺(tái)電腦在內(nèi)網(wǎng)中就是一臺(tái)標(biāo)準(zhǔn)地圖服務(wù)器,內(nèi)網(wǎng)中任何一臺(tái)電腦都可以通過(guò)打開網(wǎng)址離線查看地圖,但需要注意的是需要將網(wǎng)址中的IP改為本機(jī)IP地址。
最后再次申明,由于本文中提供的數(shù)據(jù)為示例數(shù)據(jù),旨在說(shuō)明地圖發(fā)布服務(wù)中間件的內(nèi)網(wǎng)離線發(fā)布功能,因此衛(wèi)星影像數(shù)據(jù)和地名標(biāo)簽都僅僅提供全球前10級(jí)數(shù)據(jù)。
你可以通過(guò)私信回復(fù)"免費(fèi)數(shù)據(jù)",領(lǐng)取一個(gè)省的高清衛(wèi)星影像數(shù)據(jù),然后更新到對(duì)應(yīng)的數(shù)據(jù)目錄即可!
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。