GMap.Net開發之在地圖上新增多邊形
上一篇介紹了在GMap上新增自定義標籤(GMapMarker),這篇介紹在GMap上新增多邊形(GMapPolyogn),並且介紹如何在地圖上畫任意的多邊形。
如果已經知道了多邊形的各個點的位置,就可以通過如下方式在地圖上新增多邊形:
GMapOverlay polyOverlay = new GMapOverlay("polygons"); List points = new List(); points.Add(new PointLatLng(-25.969562,32.585789)); points.Add(new PointLatLng(-25.966205,32.588171)); points.Add(new PointLatLng(-25.968134,32.591647)); points.Add(new PointLatLng(-25.971684,32.589759)); GMapPolygon polygon = new GMapPolygon(points, "mypolygon"); polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red)); polygon.Stroke = new Pen(Color.Red, 1); polyOverlay.Polygons.Add(polygon); gmap.Overlays.Add(polyOverlay);
如果需要手動在地圖上畫多邊形,可以通過在地圖上記錄每個點選的位置,每次點選更新正在畫的多邊形就可以了,實現方式如下:
先定義一些變數:
private GMapOverlay polygons = new GMapOverlay("polygon"); //放置polygon的圖層 private GMapPolygon drawingPolygon = null; //正在畫的polygon private List<PointLatLng> drawingPoints = new List<PointLatLng>(); //多邊形的點集 private GMapPolygon currentPolygon;
mapControl.Overlays.add(polygons);
在點選mousedown事件中更新多邊形的點集(即更新多邊形的形狀):
void mapControl_MouseDown(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { isLeftButtonDown = true; if (checkBoxDrawPolygon.Checked) { drawingPoints.Add(mapControl.FromLocalToLatLng(e.X, e.Y)); if (drawingPolygon == null) { drawingPolygon = new GMapPolygon(drawingPoints, "my polygon"); drawingPolygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red)); drawingPolygon.Stroke = new Pen(Color.Blue, 2); drawingPolygon.IsHitTestVisible = true; polygons.Polygons.Add(drawingPolygon); } else { drawingPolygon.Points.Clear(); drawingPolygon.Points.AddRange(drawingPoints); if (polygons.Polygons.Count == 0) { polygons.Polygons.Add(drawingPolygon); } else { mapControl.UpdatePolygonLocalPosition(drawingPolygon); } } //mapControl.Refresh(); } } }
在雙擊事件中將當前正在畫的多邊形加到儲存多邊形的GMapOverlay中:
void mapControl_MouseDoubleClick(object sender, MouseEventArgs e) { if (checkBoxDrawPolygon.Checked && drawingPolygon != null) { polygons.Polygons.Add(drawingPolygon); drawingPolygon = null; drawingPoints.Clear(); } }
在OnPolygonEnter和OnPolygonLeave中改變多邊形的輪廓顏色:
void mapControl_OnPolygonLeave(GMapPolygon item) { currentPolygon = null; item.Stroke.Color = Color.MidnightBlue; } void mapControl_OnPolygonEnter(GMapPolygon item) { currentPolygon = item; item.Stroke.Color = Color.Red; }
採用同樣的方法,可以在地圖上畫矩形、圓形等圖形,畫矩形和圓形的時候要隨滑鼠移動改變圖形的大小,需要在MouseMove事件中改變正在畫的圖形的大小。
由於圓形沒法用點集組成(無窮個點組成),可以採用GMapMarker來畫。
效果圖如下:
相關推薦
GMap.Net開發之在地圖上新增多邊形
上一篇介紹了在GMap上新增自定義標籤(GMapMarker),這篇介紹在GMap上新增多邊形(GMapPolyogn),並且介紹如何在地圖上畫任意的多邊形。 如果已經知道了多邊形的各個點的位置,就可以通過如下方式在地圖上新增多邊形: GMapOverlay polyOverlay = new GMa
GMap.Net開發之在WinForm和WPF中使用GMap.Net地圖外掛
GMap.NET是什麼? 來看看它的官方說明:GMap.NET is great and Powerful, Free, cross platform, open source .NET control. Enable use routing, geocoding, directions and maps
GMap.Net開發之自定義Marker
上一篇文章介紹瞭如何在WinForm和WPF中使用GMap控制元件,這篇介紹下GMap中Marker的使用。 自定義Marker,可以理解為在地圖上自定義圖示(Custom Marker),先看看GMap的地圖和圖示的顯示方式: Map控制元件上可以新增Overlay(圖層),可以新增多個圖層,先新增
GMap.Net開發之地址解析與路徑查詢
上一篇介紹瞭如何在GMap地圖上新增多邊形,這篇介紹下如何使用線上的地圖服務進行“地址解析”和“路徑查詢”。 先看地址解析,GMap中的地址解析主要用到GeocodingProvider中的如下方法: //根據關鍵字得到一組座標 GeoCoderStatusCode GetPoints(string
iOS開發之地圖與定位
control 移動 idt line tor mkmapview 什麽 .cn 構建 不管是QQ還是微信的移動client都少不了定位功能,之前在微信demo中沒有加入定位功能,今天就寫個定位的小demo來了解一下定位和地圖的東西。地圖和定位看上去是挺高大
【.NET開發之美】使用ComponentOne提高.NET DataMap中的載入速度
概述 FlexGrid for WinForm 採用了最新的資料繫結技術,並與Microsoft .NET Framework無縫整合。 因此,您可以獲得易於使用的靈活網格控制元件,用於建立使用者友好介面,以顯示、編輯、格式化、組織、彙總和打印表格資料。 FlexGrid的DataMap屬性允
.NET開發之效能優化
資料庫效能之表設計 樹表設計: 樹狀表都是使用ID和IDParent兩個欄位來表示樹關係。對樹進行查詢只能使用自關聯方式,不光寫法麻煩而且記錄多的時候查詢效能會非常差。建議在設計樹表的時候可以考慮加入treePa
根據經緯度在地圖上新增標記,實現登陸使用者分佈地理位置,顯示使用者資訊
實現登陸使用者分佈地理位置標註,可以顯示使用者資訊 直接上乾貨(整個html網頁) <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title&g
SpringBoot | 第十七章:web 應用開發之檔案上傳
前言 上一章節,我們講解了利用模版引擎實現前端頁面渲染,從而實現動態網頁的功能,同時也提出了相容jsp專案的解決方案。既然開始講解web開發了,我們就接著繼續往web這個方向繼續吧。通常,我們在做web開發時,碰見諸如附件上傳、圖片頭像上傳等檔案的上傳需求也是再正常不過的。
04 在地圖上新增主頁、定位、鷹眼圖和比例尺控制元件
在上一篇文章中我們學習瞭如何建立一個簡單的地圖,那接下來,我們學習如何給建立好的地圖上新增一些基本的空間,最終效果如下圖所示: 由上圖可以看出,我們在地圖上添加了主頁、定位、鷹眼圖以及比例尺控制元件,下面將詳細介紹如何新增: 1 主頁按鈕的新增 新增主頁按鈕的前提是
GMap.net開發升級日誌20150822-20170511
2015.8.22 1.更新了谷歌地球衛星地圖的路徑,可以訪問高清衛星地圖了。更新後,必須重新生成下GMap.NET.Core才能有效果 2.關於如何獲取谷歌地圖和其它地圖的地圖路徑: 點選Chrome瀏覽器的選單(位址列右側,圖示是三個橫線的)按鈕,選擇:工具
android開發之OkHttp上傳byte陣列
最近準備對老專案改造安卓9.0相容,之前app請求是封裝的org.apache.http.legacy.jar這個包,而這個包再9.0的模擬器上會無法訪問,因此需要進行改造,而我的方案是直接改封裝底層為okhttp,簡單快捷; okhttp的 get post post
OpenLayers學習筆記(三)— QML與HTML通信之 地圖上點擊添加自由文本
web osi target eps open 文本輸入框 ref append tee 實現在地圖隨意點擊,彈出文本輸入框,輸入任意文字,完成自由文本添加的功能 作者: 狐貍家的魚 Github: 八至 本文鏈接:地圖上點擊添加自由文本 關於如何QML與
利用WPF建立自己的3d gis軟體(非axhost方式)(四)在地圖上新增FrameworkElement
先下載SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew 密碼:1te1 地圖資料包(sqlserver2008R2版本,也可以不下載): https://pan.baidu.com/s/1PjcNamad7OVpCrsVJ7dwF
Android遊戲開發之地圖編輯器的使用以及繪製地圖
x Mappy中文地圖編輯器的使用說明 下載地址: Mappy地圖編輯器.rar (938.58 KB, 下載次數: 2967) 壓縮包中包含 遊戲地圖編輯器使用指南 與地圖資源圖片 宮院1.png 一張 mapwin.exe 可執行檔案 map.FMP 與map.TXT
微信小程式開發之圖片上傳+Java服務端接收 好不好使有待確認
閒言少敘直入正題存放路徑:/root/apache-tomcat-8.5.30/webapps/images/xxx.jpg前端程式碼在網上一搜一大堆,且搜出來的結果基本上是正確的,沒啥好說的,我連程式碼都不想貼(如果有時間的話明天整理下貼在文章結尾,沒時間的話就不貼了)。但是,但是,但是,靠譜的,不用改動就
.NET開發環境VS中新增簡單自定義程式碼段
程式碼段極大增加了我們的開發效率,使我們可以快速調出固定的程式碼格式。 比如說,我們在程式中輸入cw,並按下兩次tab鍵,開發環境就會自動為我們生成程式碼。 按兩下tab鍵後 再比如我們輸入 prop 自動生成 我們只需要改一下相應的屬性型別和屬性名即可。 我們
Android開發之 EditText 上的清空按鈕
Android開發時很多時候EditText 輸入框都需要一些 X 一類的清空按鈕,這樣就必須重寫EditText public class UserPwdEditText extends EditText { private final St
vue元件開發之圖片上傳本地預覽元件
最近專案一直在使用vue,以前只是用vue做過一些簡單的demo對資料進行增刪改,並沒有用於實際開發專案,。今天就想了一下如何用vue實現常見的圖片上傳前本地預覽效果。 效果預覽: <template> <div class
(0016)iOS 開發之Mac上Navicat Premium 建立遠端連線和本地連線
1.下載安裝 (百度雲盤裡面有安裝檔案和註冊機) 連結: https://pan.baidu.com/s/1kVG1k71 密碼: mr5g 2.破解之後還可以漢化: 把解壓的漢化中文包中的兩