搜尋
首頁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
Python vs. JavaScript:開發人員的比較分析Python vs. JavaScript:開發人員的比較分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

Python vs. JavaScript:選擇合適的工具Python vs. JavaScript:選擇合適的工具May 08, 2025 am 12:10 AM

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript:了解每個的優勢Python和JavaScript:了解每個的優勢May 06, 2025 am 12:15 AM

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

JavaScript的核心:它是在C還是C上構建的?JavaScript的核心:它是在C還是C上構建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架:為現代網絡開發提供動力JavaScript框架:為現代網絡開發提供動力May 02, 2025 am 12:04 AM

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

JavaScript,C和瀏覽器之間的關係JavaScript,C和瀏覽器之間的關係May 01, 2025 am 12:06 AM

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境