首页 > 解决方案 > 如何使用 GMap .NET 使用正确的顶点顺序绘制多边形

问题描述

我正在尝试使用从数据库中获取的点列表绘制多边形,在此示例中,它是硬编码的,我无法重新排序数据库中的内容。

我的问题是生成的多边形不占用所有点覆盖的总面积。

这就是我得到的

在此处输入图像描述

这就是我需要的

在此处输入图像描述

这是我的代码(这些点仅出于测试原因进行硬编码,但这就是我从数据库中得到的并按此顺序)

enter using GMap.NET;
using GMap.NET.WindowsForms;
using GMap.NET.WindowsForms.Markers;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace demoexpansion
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

    private void Form1_Load(object sender, EventArgs e)
    {
        gmap.MapProvider = GMap.NET.MapProviders.BingMapProvider.Instance;
        GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly;

        GMapOverlay polyOverlay = new GMapOverlay("Test");
        var points = new List<PointLatLng>
        {
            new PointLatLng(-3.675462429, -80.66476808),
            new PointLatLng(-3.675745365, -80.66514959),
            new PointLatLng(-3.675462429, -80.66476808),
            new PointLatLng(-3.675232046, -80.66495175),
            new PointLatLng(-3.675513755, -80.66532682)
        };
        GMapPolygon polygon = new GMapPolygon(points, "2");
        polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
        polygon.Stroke = new Pen(Color.Red, 3);
        polyOverlay.Polygons.Add(polygon);
        
        gmap.Overlays.Add(polyOverlay);

        gmap.Position = points[0];
        gmap.Zoom = 18;
    }


    }
}

请问有什么想法吗?:(

标签: c#winformsmapsgmap.net

解决方案


推荐阅读