예제 #1
0
        public void CirclePS()
        {
            PlaceSearchRequestDTO placeSearchRequestDTO = new PlaceSearchRequestDTO();

            placeSearchRequestDTO.Query    = "atm机";
            placeSearchRequestDTO.Location = "39.915,116.404";
            placeSearchRequestDTO.Radius   = "2000";
            placeSearchRequestDTO.Output   = "json";
            var result = BaiduProxy.CirclePlaceSearch(placeSearchRequestDTO);
        }
예제 #2
0
        private void button1_Click_1(object sender, EventArgs e)
        {
            listBox1.Items.Clear();

            Variables.GetPoints(map);
            var radio = Utils.GetFormRadio(groupBox1);

            RGeocoderRequestDTO rGeocoder = new RGeocoderRequestDTO();

            rGeocoder.Location      = Variables.CenterY + "," + Variables.CenterX;
            rGeocoder.Ret_coordtype = "gcj02ll";
            rGeocoder.Output        = "json";
            var rGeocoderResponseDTO = BaiduProxy.RGeocoder(rGeocoder);


            var searchStr = this.textBox1.Text;
            PlaceSearchRequestDTO place = new PlaceSearchRequestDTO();

            place.Coord_Type    = 3;
            place.Ret_Coordtype = "gcj02ll";
            place.Output        = "json";

            place.Query = searchStr;

            switch (radio)
            {
            case entity.OptionEnum.auto:
                if (searchStr == null || searchStr.Trim() == "")
                {
                    MessageBox.Show("请输入检索词");
                    return;
                }
                place.Region = rGeocoderResponseDTO.Formatted_address;
                var placeSearchResponseDTOs = BaiduProxy.PlaceSearch(place);
                placeSearchResponseDTOs.ForEach(x => { listBox1.Items.Add(x.ToString()); });
                break;

            case entity.OptionEnum.rectangle:
                if (searchStr == null || searchStr.Trim() == "")
                {
                    MessageBox.Show("请输入检索词");
                    return;
                }
                place.Bounds = Variables.LastRectPointY1 + "," + Variables.LastRectPointX1 + "," + Variables.LastRectPointY2 + "," + Variables.LastRectPointX2;
                var list = BaiduProxy.RectanglePlaceSearch(place);
                list.ForEach(x => { listBox1.Items.Add(x.ToString()); });
                break;

            case entity.OptionEnum.circle:
                if (searchStr == null || searchStr.Trim() == "")
                {
                    MessageBox.Show("请输入检索词");
                    return;
                }
                place.Location = Variables.LastPointY + "," + Variables.LastPointX;
                place.Radius   = Variables.Radius.ToString();
                var list1 = BaiduProxy.CirclePlaceSearch(place);
                list1.ForEach(x => { listBox1.Items.Add(x.ToString()); });
                break;

            case entity.OptionEnum.direction:
                if (!searchStr.Contains(",") && !searchStr.Contains(','))
                {
                    MessageBox.Show("输入格式错误.");
                    return;
                }

                var splits = searchStr.Split(new char[] { ',', ',' }, StringSplitOptions.RemoveEmptyEntries);
                if (splits.Length != 2)
                {
                    MessageBox.Show("输入格式错误.");
                    return;
                }
                var dir = splits[0];
                place.Query         = splits[1];
                place.Location      = Variables.LastPointY + "," + Variables.LastPointX;
                place.Ret_Coordtype = "bd09ll";
                var list2 = BaiduProxy.CirclePlaceSearch(place);
                if (dir.Contains("北"))
                {
                    list2.Where(x => x.Location.Lat > Variables.LastPointY).ToList().ForEach(x => { listBox1.Items.Add(x); });
                }
                if (dir.Contains("南"))
                {
                    list2.Where(x => x.Location.Lat < Variables.LastPointY).ToList().ForEach(x => { listBox1.Items.Add(x); });
                }
                if (dir.Contains("西"))
                {
                    list2.Where(x => x.Location.Lng > Variables.LastPointX).ToList().ForEach(x => { listBox1.Items.Add(x); });
                }
                if (dir.Contains("东"))
                {
                    list2.Where(x => x.Location.Lng < Variables.LastPointX).ToList().ForEach(x => { listBox1.Items.Add(x); });
                }

                break;

            case entity.OptionEnum.position:
                if (searchStr == null || searchStr.Trim() == "")
                {
                    MessageBox.Show("请输入检索词");
                    return;
                }
                LGeocoderRequestDTO lGeocoder = new LGeocoderRequestDTO();
                lGeocoder.Address       = searchStr;
                lGeocoder.City          = rGeocoderResponseDTO.AddressComponent.City;
                lGeocoder.Ret_coordtype = "gsj02ll";
                lGeocoder.Output        = "json";
                var lGeocoderResponseDTO = BaiduProxy.LGeocoder(lGeocoder);
                if (lGeocoderResponseDTO == null)
                {
                    MessageBox.Show("请检查输入的检索词是否为地理位置");
                    return;
                }
                listBox1.Items.Add(lGeocoderResponseDTO);
                break;

            case entity.OptionEnum.convert:
                if (searchStr == null || searchStr.Trim() == "")
                {
                    rGeocoder.Location = Variables.LastPointY + "," + Variables.LastPointX;
                }
                else
                {
                    if (!searchStr.Contains(",") && !searchStr.Contains(","))
                    {
                        MessageBox.Show("请确认检索为坐标信息!");
                        return;
                    }
                    rGeocoder.Location = searchStr;
                }

                rGeocoder.Pois       = 1;
                rGeocoderResponseDTO = BaiduProxy.RGeocoder(rGeocoder);

                listBox1.Items.Add(rGeocoderResponseDTO.AddressComponent);
                listBox1.Items.Add(rGeocoderResponseDTO.Business);
                listBox1.Items.Add("城市代码:" + rGeocoderResponseDTO.CityCode);
                listBox1.Items.Add(rGeocoderResponseDTO.Formatted_address);
                listBox1.Items.Add(rGeocoderResponseDTO.Location);
                listBox1.Items.Add(rGeocoderResponseDTO.Sematic_description);
                rGeocoderResponseDTO.Pois.ForEach(x =>
                {
                    listBox1.Items.Add(x.ToString());
                });

                break;

            case entity.OptionEnum.none:
                break;
            }
        }