Search code examples
c#visual-studiokmlgmap.net

How to import/export kml and display in gmap.net


I want to create a simple database viewer using Microsoft Visual Studio and GMaps.NET which can (1) do a specific search and update the list, (2) export the list as KML, and (3) upload the KML file to be viewed in the embedded gmap. Step 1 is already resolved but I cannot find reference to proceed with steps 2 and 3. Any help will be highly appreciated!

Here is my code:

using System;
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;
using GMap.NET;
using GMap.NET.WindowsForms;
using GMap.NET.WindowsForms.Markers;
using GMap.NET.MapProviders;
//if these GMap statements are not enabled, these will have to be typed with the namespaces e.g. GMap.Net.MapProviders.GoogleMap
namespace KDMI_DBViewer_v1._0
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void existingPermitsBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.existingPermitsBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.permits_2016DataSet);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'permits_2016DataSet.ExistingPermits' table. You can move, or remove it, as needed.
            this.existingPermitsTableAdapter.Fill(this.permits_2016DataSet.ExistingPermits);
        }

        private void gMapControl1_Load(object sender, EventArgs e)
        {
            gMapControl1.MapProvider = GMapProviders.GoogleTerrainMap;
            //gMapControl1.ShowCenter = false; if enabled, this will remove the red cross
            gMapControl1.Position = new PointLatLng(12.0725555, 122.895494);
            gMapControl1.DragButton = MouseButtons.Left;
            gMapControl1.Zoom = 5;
            gMapControl1.MinZoom = 5;
            gMapControl1.MaxZoom = 12;

        }


        private void specificSearchToolStripButton_Click(object sender, EventArgs e)
        {
            try
            {
                this.existingPermitsTableAdapter.SpecificSearch(this.permits_2016DataSet.ExistingPermits, provinceToolStripTextBox.Text, municipalityToolStripTextBox.Text, typeToolStripTextBox.Text);
            }
            catch (System.Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

        }

Solution

  • Unfortunetly, no KML parser yet implemented as the creator of GMap.Net said gmap.net issues.

    But instead you can create the import \ export KML\KMZ methods yourself using a library called SharpKML

    SharpKML is an implementation of the Open Geospatial Consortium (OGC) KML 2.2 standard developed in C#, able to read/write both KML files and KMZ files.

    Getting Started:

    The easiest way to use the library is to install the SharpKml.Core NuGet package, however, you can also download the binaries/source code from this project page.