搜尋
首頁web前端js教程與SVG和JQuery的動態地理地圖

與SVG和JQuery的動態地理地圖

當我需要創建圖表時,我的首選是Google圖表或另一個專用庫。但是,有時候,我需要一些我在那裡找不到的特定功能。在這些情況下,SVG圖像被證明非常有價值。 最近,我必須構建一個報告頁面,該頁面能夠顯示一張意大利的地圖,其中每個區域根據從數據庫中檢索的某些值具有不同的顏色音調。多虧了SVG,這項任務非常容易。

>

鑰匙要點

根據從數據庫中檢索到的數據,可以使用

SVG圖像來創建每個區域的動態地理圖。這是通過將每個區域繪製為具有唯一級別名稱的單個對象來實現的,該對象與數據庫中使用的代碼識別其數據。
    >可以使地圖與CSS和jQuery進行交互,從而允許其顯示特定的數據,例如人群值,當鼠標徘徊在區域上時。這是通過添加G:Hover和新的Info_panel類的CSS規則來實現的,以樣式的信息框,然後對上一個循環修改,將.data()添加為存儲將在Hover上顯示的信息。
  • > 可以使
  • SVG地圖響應響應,與其他JavaScript庫一起使用,用於數據可視化,甚至是動畫。它們也可以自定義和優化以進行性能。但是,創建自定義地圖需要對SVG和地理數據有很好的了解,並且複雜的動畫會影響性能。
  • 在Illustrator中創建SVG地圖
  • 首先,我畫了一張意大利的地圖,上面寫著插圖畫家:

>每個區域都被繪製為一個對象,並且每個區域都有自己的級別,其名稱與數據庫中使用的代碼匹配以識別其相對數據(例如:托斯卡納的“ TOS”) 。

最後,必須將地圖保存為SVG文件。您必須注意將“ CSS屬性”選項設置為Illustrator中的“樣式元素”,如下所示:與SVG和JQuery的動態地理地圖

>打開剛剛創建的文件,您會看到它包含一組g標籤,其ID與Illustrator級別的名稱匹配。

構建我們的html文件

與SVG和JQuery的動態地理地圖g標籤中包含的每個項目都有一個ST0類,因此可以將中風和填充CSS屬性分配給它們:>

如果您嘗試更改這些值,則地圖將立即更改:>

現在,我們可以使用該代碼使用Inline SVG構建HTML文件,如下所示(為方便起見,縮短了代碼):與SVG和JQuery的動態地理地圖>

<span><span>
</span><span><span><span>></span>
</span><span><span><span>></span>
</span>    <span><span><span><meta> charset<span>="UTF-8"</span>></span>
</span>    <span><span><span><title>></title></span>Map Sample<span><span></span>></span>
</span>    <span><span><span><style> type<span >="text/css"</style></span> media<span>="all"</span>></span><span>
</span></span><span><span>        <span><span>.map svg</span> {
</span></span></span><span><span>            <span>height: auto;
</span></span></span><span><span>            <span>width: 350px;
</span></span></span><span><span>        <span>}
</span></span></span><span><span>        <span><span>.map g</span> {
</span></span></span><span><span>            <span>fill: #ccc;
</span></span></span><span><span>            <span>stroke: #333;
</span></span></span><span><span>            <span>stroke-width: 1;
</span></span></span><span><span>        <span>}
</span></span></span><span><span>    </span><span><span></span>></span>
</span><span><span><span></span>></span>
</span><span><span><span>></span>
</span>    <span><span><span><div> class<span>="map"</span>>
        <span><span><span><svg> version<span>="1.1"</span> id<span>="Livello_1"</span> xmlns<span>="https://www.w3.org/2000/svg"</span> <span>xmlns:xlink</span><span>="https://www.w3.org/1999/xlink"</span> x<span>="0px"</span> y<span>="0px"</span> viewBox<span>="0 -21.6 761 919"</span> <span>style<span>="<span>enable-background:new 0 -21.6 761 919;</span>"</span></span> <span>xml:space</span><span>="preserve"</span>></svg></span>
</span>            <span><span><span><g> id<span>="sar"</span>></g></span>
</span>                <span><span><span><polygon> class<span>="st0"</span> points<span>="193,463 ...    "</span>/></polygon></span>
</span>            <span><span><span></span>></span>
</span>
            <span><!-- etc ... -->
</span>
        <span><span><span></span>></span>
</span>    <span><span><span></span></span></span></span></span></span>
</div></span>></span>
</span><span><span><span></span>></span>
</span><span><span><span></span>></span></span></span></span></span></span></span></span>

>您可以看到SVG標籤內部的樣式屬性已被刪除,並用位於文檔頭部內部的新樣式替換。所有G元素最初都充滿了淺灰色。

>不再使用ST0類(您可以從SVG代碼中刪除它),並且已被.map G Selector替換。無論如何,這不是強制性的,您可以使用您喜歡的CSS選擇器。

第二步包括將我們的地圖與從數據庫中檢索的一些數據結合。在此示例中,我們的目標是根據每個地區的人口繪製地圖。

添加JSON數據和JavaScript

>數據以JSON格式檢索,並直接粘貼在我們的HTML文件中(當然,在現實世界中,將使用AJAX或類似的數據檢索數據)。

>

現在,我們的頁面將在我們的JavaScript文件中包含JSON,該文件看起來像這樣(再次,縮寫): 在那之後,選擇了一種顏色(在這種情況下為#0b68AA),然後將其分配給人口最高價值的區域。其他區域將以主要顏色的色調與人口百分比成比例。 接下來,我們可以添加一些JavaScript。

首先,我們必須確定最大種群價值的區域。這可以使用幾行代碼來完成。

>
<span>var regions=[
</span>    <span>{
</span>        <span>"region_name": "Lombardia",
</span>        <span>"region_code": "lom",
</span>        <span>"population": 9794525
</span>    <span>},
</span>    <span>{
</span>        <span>"region_name": "Campania",
</span>        <span>"region_code": "cam",
</span>        <span>"population": 5769750
</span>    <span>},
</span>
    <span>// etc ...
</span>
<span>];</span>
>一旦構建了包含總體值的臨時數組,我們就可以使用Math.max方法:>

然後,我們可以根據計算

>人口 /最大值

(在jQuery的一點幫助下),將透明度的百分比應用於它們:>

這是結果:

<span>var temp_array= regions.map( function( item ) {
</span>    <span>return item.population;
</span><span>});
</span>
<span>var highest_value = Math.max.apply( Math, temp_array );</span>

添加與CSS和JQuery 的交互性 可以通過一些交互性來改進地圖。我們希望它在鼠標位於區域上放置時顯示人口價值。

>
<span>$(function() {
</span>  <span>for(i=0; i     <span>$('#'+ regions[i].region_code).css({'fill': 'rgba(11, 104, 170,' 
</span>     <span>+ regions[i].population/highest_value 
</span>     <span>+ ')'});
</span>    <span>}
</span><span>});</span></span>
首先,我們為G:Hover和一個新的Info_panel類添加了CSS規則,以設計我們的信息框:

,否則! 然後,我們必須修改以前的循環,將.data()添加到存儲將顯示在懸停:

上的信息

>最後,我們可以通過添加一些鼠標效果來完成腳本:

>

它的工作原理:

  • 首先,使用鼠標,我們構建了一個DIV,其中包含要顯示的信息(區域名稱和人口)。每當鼠標懸停在G元素上並將其附加到文檔主體時,DIV是構建的; 當光標在盤旋區域外時, mouseleave刪除了div;
  • 最後的方法,莫斯莫夫,檢索鼠標坐標並將其分配給生成的divs。
  • 這是codepen的最終結果:
  • 請參閱codepen上的sitepoint(@sitepoint)的筆kdhfh。

在帶有SVG和jQuery

的動態地理地圖上的常見問題(常見問題解答)

>如何使我的SVG映射響應?

使您的SVG映射響應能力涉及將SVG的寬度和高度設置為100%,並確保正確設置了ViewBox屬性。 ViewBox屬性允許您指定地圖的某個區域可見,並且在縮放或向下擴展時將保留縱橫比。您還可以使用媒體查詢根據屏幕大小來調整地圖的大小和位置。

我可以與其他JavaScript庫一起使用SVG地圖,除了jQuery?

​​

是的,SVG地圖可以與其他JavaScript庫一起使用,例如D3.JS,Raphael和Snap.svg。這些庫為創建和操縱SVG圖形提供了其他功能。但是,實現可能與jQuery不同,因此您需要參考各自的庫的文檔。

>

>如何將交互性添加到我的svg地圖?

>您可以將交互性添加到您的使用JavaScript或jQuery的SVG地圖。這可以包括工具提示,縮放,平移和可點擊區域之類的功能。例如,您可以使用'MouseOver'和'MeorsOut'事件顯示工具提示,以及“單擊”事件以使區域可單擊。

>

>如何使用SVG映射進行數據可視化? 🎜> SVG地圖可用於通過基於數據值的著色區域來可視化數據,這是一種稱為Choropleth映射的技術。您可以使用JavaScript將數據綁定到您的SVG元素並應用顏色尺度。諸如d3.js之類的庫提供了用於創建唱片映射的內置功能。 >

>如何創建自定義SVG映射?

>創建自定義SVG地圖涉及使用諸如vector圖形軟件繪製映射Adobe Illustrator或Inkscape,然後將其導出為SVG文件。然後,您可以使用JavaScript或jQuery來操縱SVG元素並添加交互性。請記住,創建自定義地圖需要很好地了解SVG和地理數據。

>為什麼我的SVG地圖區域無法正確顯示?

如果您的SVG地圖區域未正確顯示,則可能是由於幾個原因。 SVG文件可能無法正確格式化,或者在JavaScript代碼中可能會出現錯誤。檢查控制台中是否有任何錯誤消息,並確保您的SVG文件有效。

我可以在所有瀏覽器中使用SVG地圖嗎?

野生動物園和邊緣。但是,舊版本的Internet Explorer(IE8及以下)不支持SVG。如果您需要支持這些瀏覽器,則可以使用諸如Raphaël之類的多填充或將SVG轉換為其他格式。性能地圖可能涉及幾種技術。其中包括最大程度地減少SVG文件的大小,使用CSS進行樣式而不是內聯屬性以及有效地使用JavaScript。您還可以使用SVGO之類的工具來優化SVG文件。

如何使我的SVG映射動畫?

>您可以使用CSS動畫或JavaScript對SVG映射進行動畫動畫。這可以包括對SVG元素的顏色,形狀和位置進行動畫動畫。請記住,複雜的動畫會影響性能,因此很少使用。 SVG在Android和iOS Web視圖中都得到了支持,並且可以使用Cordova或React Native等框架中使用。但是,請記住,在舊設備或複雜地圖上性能可能是一個問題。

>

以上是與SVG和JQuery的動態地理地圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

了解JavaScript引擎:實施詳細信息了解JavaScript引擎:實施詳細信息Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:學習曲線和易用性Python vs. JavaScript:學習曲線和易用性Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python vs. JavaScript:社區,圖書館和資源Python vs. JavaScript:社區,圖書館和資源Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C到JavaScript:所有工作方式從C/C到JavaScript:所有工作方式Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。