zoukankan      html  css  js  c++  java
  • GMap.NET地名搜索

    GMap中地址搜索主要用到GeocodingProvider。GeocodingProvider的方法如下:

          GeoCoderStatusCode GetPoints(string keywords, out List<PointLatLng> pointList); //根据关键字得到一组坐标

          PointLatLng? GetPoint(string keywords, out GeoCoderStatusCode status);//根据关键字得到一个坐标

          // ...

          GeoCoderStatusCode GetPlacemarks(PointLatLng location, out List<Placemark> placemarkList);//根据坐标得到地址

          Placemark GetPlacemark(PointLatLng location, out GeoCoderStatusCode status);//根据坐标得到一组地址

    对google api比较熟悉的同学对PlaceMark很熟悉吧!!

    代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using GMap.NET.MapProviders;
    using GMap.NET;
    using GMap.NET.WindowsForms.Markers;
    using GMap.NET.WindowsForms;
    
    namespace Demo.WindowsForms.YJQDemos
    {
        public partial class SearchAddress : Form
        {
            private GMapOverlay searchResultLayer = new GMapOverlay("SearchResultLayer");
            private List<PointLatLng> searchResult = null;
    
            public SearchAddress()
            {
                InitializeComponent();
            }
    
            private void BTNSearchAddress_Click(object sender, EventArgs e)
            {
                String searcheKey = this.TBSAdress.Text.Trim();
                GeocodingProvider gp = this.MapControl.MapProvider as GeocodingProvider;
                if (gp == null)
                {
                    gp = GMapProviders.OpenStreetMap as GeocodingProvider;
                }
                
                searchResult = new List<PointLatLng>();
                gp.GetPoints(searcheKey, out searchResult);
                this.LBXSearchResult.Items.Clear();
                this.searchResultLayer.Clear();
                this.LBXSearchResult.Visible = true;
                foreach (PointLatLng pt in searchResult)
                {
                   // this.LBXSearchResult.Items.Add(String.Format("{0},{1}", pt.Lng, pt.Lat));
                    GMarkerGoogle marker = new GMarkerGoogle(pt, GMarkerGoogleType.arrow);
                    searchResultLayer.Markers.Add(marker);
                    GeoCoderStatusCode placeMarkResult = new GeoCoderStatusCode();
                    Placemark place = gp.GetPlacemark(pt, out placeMarkResult);
                    this.LBXSearchResult.Items.Add(place.Address);
                }
    
                this.MapControl.ZoomAndCenterMarkers(searchResultLayer.Id);
            }
    
            private void MapControl_Load(object sender, EventArgs e)
            {
    
            }
    
            private void SearchAddress_Load(object sender, EventArgs e)
            {
                this.MapControl.MapProvider = GMapProviders.GoogleChinaMap;
                this.MapControl.MapProvider.MinZoom = 1;
                this.MapControl.MapProvider.MaxZoom = 17;
                this.MapControl.DragButton = System.Windows.Forms.MouseButtons.Left;
                this.MapControl.Overlays.Add(searchResultLayer);
                GMapProvider.Language = LanguageType.ChineseSimplified;
            }
    
            private void LBXSearchResult_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (this.LBXSearchResult.SelectedIndex < 0)
                {
                    return;
                }
                searchResultLayer.Clear();
                GMarkerGoogle marker = new GMarkerGoogle(this.searchResult[this.LBXSearchResult.SelectedIndex], GMarkerGoogleType.arrow);
                searchResultLayer.Markers.Add(marker);
                this.MapControl.Position = this.searchResult[this.LBXSearchResult.SelectedIndex];
            }
    
           
        }
    }
    

      

    效果:

  • 相关阅读:
    watchguard 软件工程师内部招聘!
    反脆弱:被雅虎裁掉的为何是他们?
    Linux SSH无密码login
    Makefile选项CFLAGS,LDFLAGS,LIBS
    python 相关编码[转]
    用python处理html代码的转义与还原
    运维部_首席架构师
    Software Engineer(百赴美)
    修改linux文件权限命令:chmod
    How to install Eclipse?
  • 原文地址:https://www.cnblogs.com/yixinliu/p/2810670.html
Copyright © 2011-2022 走看看