supermap如何根据经纬度获取位置

supermap如何根据经纬度获取位置

我用的是这样的一个方法

步骤一:先用在地图上获取到的坐标通过api转换成百度坐标(以下是转换api)

var urlzuobiao = “http://www.supermapol.com/iserver/services/coordconvert/rest/coordinate/convert.json?points=[{x:"+lonlat.lon+",y:"+lonlat.lat+"}]&from=910113&to=910102&key=你的key

可以参考:

https://www.supermapol.com/developer/webapi.html#convert

步骤二:用获取到的百度坐标用百度地图api生成了数据

String urlurl = “http://api.map.baidu.com/geocoder/v2/?ak=你的ak&callback=renderReverse&location=36.00821118020924,104.2681987359927&output=json&pois=1”;

获取到的数据是这样子的(如图)

在这里插入图片描述

具体详细做法:
前端:

 $.ajax({
     		  		url:"/passengertransport/Line/selectZuoBiao.do",//转换成百度坐标
	                data: {"lon":lonlat.lon, "lat":lonlat.lat} ,
	                type:"post",
	                dataType:"json",
	                success:function(data){
	           			$.ajax({
		     		  		url:"/passengertransport/Line/selectDiZhi.do",//通过百度坐标查询出具体位置
			                data: {"lon":data[0].x, "lat":data[0].y} ,
			                type:"post",
			                dataType:"json",
			                success:function(datas){
								dizhi=datas.result.formatted_address;//详细地址
								dizhis = datas.result.addressComponent.city;//具体城市
								if (arraydizhies.length == 0) {
									arraydizhies.push(dizhis);//添加地址到数组中
								}else{
									for ( var t = 0; t < arraydizhies.length; t++) {
										if (dizhis == arraydizhies[t]) {
											pandaun++;
										}
									}
								
								   if (pandaun == 0) {
									arraydizhies.push(dizhis);//添加地址到数组中
								  }else{
								    pandaun=1;
								    alert("选择的地点有重复请核对");
								  	return false;
								  }
								}
			                },
			                error:function(ers){
			                	console.log("失败"+JSON.stringify(ers));
			                }
		              })
	                },
	                error:function(er){
	                	console.log("失败"+JSON.stringify(er));
	                }
              })

后端:

	//根据地图上的坐标转换成百度坐标
	@ResponseBody
	@RequestMapping("/selectZuoBiao")
	public Object selectZuoBiao(String lon,String lat)
	{
		 String json="";
         String str = "";
         BufferedReader br=null;//读取访问结果  
		try {
			URL getwalletAmountUrl = new URL("http://www.supermapol.com/iserver/services/coordconvert/rest/coordinate/convert.json?points=[{x:"+lon+",y:"+lat+"}]&from=910113&to=910102&key=fvV2osxwuZWlY0wJb8FEb2i5");
			URLConnection context = getwalletAmountUrl.openConnection();
		    br = new BufferedReader(new InputStreamReader(
					context.getInputStream(), "UTF-8"));
			 
			 while ((str=br.readLine())!=null) {
	                json = json + str +"\n";
	            }
			System.out.println("转换后的坐标"+json);
		 } catch (Exception e) {
			e.printStackTrace();
		}finally{
			if (br != null) {//关闭流
				try {  
					br.close();
				} catch (Exception e2) {
					e2.printStackTrace();  
				}
			}
		}
		return json;
	}
	
	
	
	
	//根据转换后的坐标查出地址
		@ResponseBody
		@RequestMapping(value={"/selectDiZhi"},produces = "text/plain;charset=utf-8")
		public Object selectDiZhi(String lon,String lat)
		{
			String json="";
	         String str = "";
	         BufferedReader br=null;//读取访问结果  
			try {
				URL getwalletAmountUrl = new URL("http://api.map.baidu.com/geocoder/v2/?ak=USVjenOjbDbRDSeVvDwWgMk2DEsNdkDB&location="+lat+","+lon+"&output=json&pois=1");
				System.out.println(getwalletAmountUrl);
				URLConnection context = getwalletAmountUrl.openConnection();
			    br = new BufferedReader(new InputStreamReader(
						context.getInputStream(), "UTF-8"));
				 
				 while ((str=br.readLine())!=null) {
					 json += str;
		           }
	            	
			 } catch (Exception e) {
				e.printStackTrace();
			}finally{
				if (br != null) {//关闭流
					try {  
						br.close();
					} catch (Exception e2) {
						e2.printStackTrace();  
					}
				}
			}
			return json;
		}

之后代码能正常运行,得出的结果在控制台能显示,但是在浏览器上看到的中文出现乱码(“?”),(如下图所示)

在这里插入图片描述

所以要在该项目的spring­mvc.xml里面加上一段注解,以保证不会乱码

<!--     注解 -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

就阔以了哈哈哈

乱码的具体解决方法可以点击以下链接查看
https://ask.csdn.net/questions/718600

猜你喜欢

转载自blog.csdn.net/weixin_44268320/article/details/85719096
今日推荐