1. 程式人生 > >canvas畫線API實現簡單地圖

canvas畫線API實現簡單地圖

做一個青海專案時,涉及到地圖,簡單顯示青海省個地區的用了一個svg外掛,要求顯示熱點資料的就用了百度的地圖API。地圖的確高大上。

回顧一、後臺老大哥負責跟客戶溝通的,突然有一天客戶要求說登入頁顯示地區的地圖要有3D效果。心裡頓時有一萬匹草泥馬奔過~~哭

                百度許久,沒找到可用的方案,最終這種需求被開發說了No!

回顧二、另一個系統的登入頁,因為使用者要選擇自己所在的地區才可以登入。要求下拉框選中地區時,對應的地圖區域自動高亮;選中區域時,下拉框自動選中對應區域。

                沒辦法,只有深入分析原始碼。原始碼還好沒有uglify,不然要死去活來。沒註釋就只有程式碼即註釋。但裡面的函式呼叫有點反人類。奮鬥

花了半天時間還是解決問題了。

雖然崗位是前端,但對圖形學還是感興趣的。生氣於是就打算寫個簡單的地圖~談不上造輪子,算是前期的技術儲備吧。

關於為什麼造輪子,這個值得一看:http://blog.csdn.net/foruok/article/details/51403890

下面進入正題。

涉及到的知識點:

  1. 點在多邊形內演算法:https://www.zhihu.com/question/26551754/answer/33185339
  2. 3次貝塞爾曲線演算法

給定散點陣列,繪製光滑的閉合曲線。雖然canvas有貝塞爾曲線的API,但這樣就不好判斷指定點是否在閉合曲線美了。

不用svg,那樣豈不是顯得自己很low?得意而且還要先計算好控制點。作為一名(I)程(am)序(front)員(end),重複的工作必須用程式設計解決!!!

找過不少擬合閉合曲線平滑的文章沒什麼收穫,只能用貝塞爾曲線,但都被控制點的計算問題攔了下拉,畢竟工作之外的時間很寶貴,太複雜的演算法太耗時間(我數學不好吐舌頭)。

     終於兩天前意外發現了一篇文章,提出了簡便解決控制點計算的問題。

    傳送門:http://blog.csdn.net/hzsjun/article/details/24958773

    之前就已經實現了知識點1,一個晚上就大致完成了地圖。今晚發現有bug,修改了下就打算寫這篇文章。

   開始工作時有點忙,而且人有比較懶,都沒怎麼寫部落格。

  來兩張圖:(紅點是資料點)

水印竟然不是我的大名,要它幹嘛?

最後附上下載地址:sorry,剛剛上傳等有時間來更新~如果忘了,可以給我留言~微笑

補上地址:http://download.csdn.net/detail/ruanjiayou123/9700407

相關推薦

canvasAPI實現簡單地圖

做一個青海專案時,涉及到地圖,簡單顯示青海省個地區的用了一個svg外掛,要求顯示熱點資料的就用了百度的地圖API。地圖的確高大上。 回顧一、後臺老大哥負責跟客戶溝通的,突然有一天客戶要求說登入頁顯示地區的地圖要有3D效果。心裡頓時有一萬匹草泥馬奔過~~           

VS2012下Win32簡單功能實現

Vs2012下Win32簡單畫線功能實現 本文章為個人見解,存在錯誤或解釋不清之處還請大家批評、講解,謝謝! 環境:     vs2012下新建“win32專案”,建立過程預設即可,建立之後就是可執行的簡單視窗介面。                         

實現簡單的事件異步處理框架

void 序列化 以及 ise 包含 反序列化 高程 結合 映射 老實說,多線程在web開發裏面非常常見,很多web容器本身就支持多線程,所以很多時候我們在進行web開發的時候並不需要考慮多線程相關的負責問題,而只需要實現相關的業務功能即可。所以,可以概括地講,很多時候的w

Thread:多實現簡單購票

對象 extend *** star nds nts err dex override package com.heima.it; public class duoXiCheng extends Thread{ //繼承Thread類 //定義一個票數的變量 static

利用Hadoop提供的RPC API實現簡單的RPC程序

Hadoop RPC Java [toc] 利用Hadoop提供的RPC API實現簡單的RPC程序 在Hadoop中提供了RPC服務的使用API,通過其API地使用,可以非常簡單地構建遠程過程調用程序,下面就給出一個簡單的實例。 項目結構 為了方便操作,所有的代碼都放在本地一個項目中,實際上,

canvas

document rgba pla lan border draw ctx 多邊形 正方 一、canvas是基於狀態的繪圖環境 1、canvas是基於狀態的繪制 context.moveTo(100,100); context.lineTo(700,700); co

使用canvas,在Js中動態設定高和寬

1.定義div   <div style="height:240px;" >                            &

ASP.NET Web API實現簡單的檔案下載與上傳

ASP.NET Web API實現簡單的檔案下載與上傳。首先建立一個ASP.NET Web API專案,然後在專案下建立FileRoot目錄並在該目錄下建立ReportTemplate.xlsx檔案,用於下面示例的使用。 1、檔案下載 示例:實現報表模板檔案下載功能。 1.1 後端程

呼叫Google的API實現簡單的翻譯功能

本例項只是簡單的實現了漢譯英的功能,Google為我們提供了多種語言的互譯功能,新建類之前須下載GoogleAPI的jar包:google-api-transtate-java-0.92.jar。簡單實

Redis(ZADD)使用Java API實現簡單排名

Redis ZADD key score member [[score member] [score member] ...] 將一個或多個 member 元素及其 score 值加入到有序集 key 當中。 如果某個 member 已經是有序集的成員,那麼更新這個mem

HTML5---Canvas-,空心圖,矩形,文字,三角形,旋轉圖片

</pre><pre name="code" class="html"><!doctype html> <html> <head></head> <body> <canvas widt

呼叫百度人臉檢測API實現簡單的顏值檢測

    通過百度人工智慧平臺中的人臉檢測模組,實現簡單的人臉檢測,百度人工智慧平臺免費註冊,人臉檢測模組免費使用。相關API文件在:http://ai.baidu.com/docs#/Face-Detect-V3/top,依照API文件就可以寫出一個簡單的檢測工具。程式碼如下

android使用canvas,位移,旋轉,繪製五角星

    為了提高自己的開發水平,就想系統地學習一下Android自定義控制元件。首先呢就要從Paint和canvas學起了,與本文主題相關的有關於canvas的畫線:                                                      

Elasticsearch(二):使用JAVA API實現簡單查詢、聚合查詢

ES版本:2.3.1 JDK:1.8 所需要的jar包請在ES安裝路徑下的jars包中獲得,不要使用其他的jar否則容易出現版本問題! 注意:程式碼中TransportClient client=ESLink.getTransportClient()

2.使用canvas實現簡單直線橡皮筋式畫框

css樣式基本和之前的一樣,這裡就不提了, HTML程式碼: <div id='controls'> Stroke color: <select id="strokeStyleSelect">

ECharts-X 3D地圖World Flights簡單點Demo

myChart.setOption({ tooltip: { formatter: '{b}' }, series: [{ data: [], type: 'map3d', mapTy

百度地圖API製作類似 百度地圖的路線導航介面並實現簡單的路線規劃功能

之前我們講了怎麼在百度地圖上設定Marker(如A點。。) 和彈出框(跟隨Marker的,Marker移動的時候也是會跟著移動的),接著又覺得百度地圖自帶的放大縮小不(fei)是(chang)很(de)漂(chou)亮,我們自定義了放大縮小的控制元件,本篇我們將製作類似百度

關於網站調用在翻譯api實現翻譯功能

fun tran ring1 uda api napi {} log class 在做一些網站的時候偶爾會遇到需要中英文翻譯的部分,也許是提供用戶在線翻譯的功能,也可能是把用戶輸入的一整段文字進行翻譯。小龍最近就遇到這麽一個事兒,對接中外兩方用戶的溝通,為了對語言不那麽順暢

C#簡單的JPush(極光推送) API實現推送功能(來自mojocube的博客)

size 返回 log c# api live str -s 周期 APP推送功能大家應該都了解了,目前主要的有百度、極光等幾家公司提供推送服務,下面說一下極光推送API的簡單實現推送通知功能。 註冊完極光的賬號後,就可以創建應用,建好後會得到AppKey和Master

使用python實現簡單多邊形。

oop 簡單的 python bob int range turtle 半徑 tle import turtleimport timeimport mathdef polygon(bob,n,r): jiaoDu = 360/n juLi=2*r*math.si