Soap请求获取指定城市的天气情况并在天地图API Map中显示
来源:互联网 发布:java命令行参数args 编辑:程序博客网 时间:2024/05/01 11:41
1.进入新的公司,作为内部的评测,留给了我这个需求;
有这么一个需求
ws地址:http://218.60.147.62/aqizx_ws/webservice/AndroidWebService.asmx
方法名: selectAirStationByCityName
命名空间:http://tempuri.org/
CityName 传“沈阳”
通过这个方法可以获取到沈阳市的空气自动站数据 ;
方法名: selectAirStationByCityName
命名空间:http://tempuri.org/
CityName 传“沈阳”
通过这个方法可以获取到沈阳市的空气自动站数据 ;
现在使用天地图(tianditu.com) 把这些信息在地图上展示出来
2.之前做过类似的调用腾讯新闻接口做类似头条的Demo,只是当时是http请求;
度娘了一下Ksoap-Android请求框架和天地图的API;
3.大约的思路是:
Start页面留出一个文本框和按钮(期初想做基础数据+二级Spinner联调的城市选择,后来电脑问题很多浪费了蛮多的时间),用Asynctaskjinx
获取到的SoapObject结构是:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <selectAirStationByCityNameResponse xmlns="http://tempuri.org/"> <selectAirStationByCityNameResult> <AirAutomaticStation> <BackGroundURL>string</BackGroundURL> <WeatherURL>string</WeatherURL> <ZhanID>string</ZhanID> <ZhanName>string</ZhanName> <SO2>string</SO2> <NOx>string</NOx> <NO>string</NO> <NO2>string</NO2> <PM10>string</PM10> <O3>string</O3> <O3_8>string</O3_8> <PH2_5>string</PH2_5> <CO>string</CO> <QuailtyZhiShu>int</QuailtyZhiShu> <QuailtyZhuangKuang>string</QuailtyZhuangKuang> <QuailtyLevel>string</QuailtyLevel> <ShouYaoWRW>string</ShouYaoWRW> <JingDu>string</JingDu> <WeiDu>string</WeiDu> <CityName>string</CityName> <KongQiQualityLevel>int</KongQiQualityLevel> <StationOrder>string</StationOrder> <Aqi>double</Aqi> <vel>double</vel> <date_Time>dateTime</date_Time> <IsIAQI>int</IsIAQI> <ZHZS>string</ZHZS> </AirAutomaticStation> <AirAutomaticStation> <BackGroundURL>string</BackGroundURL> <WeatherURL>string</WeatherURL> <ZhanID>string</ZhanID> <ZhanName>string</ZhanName> <SO2>string</SO2> <NOx>string</NOx> <NO>string</NO> <NO2>string</NO2> <PM10>string</PM10> <O3>string</O3> <O3_8>string</O3_8> <PH2_5>string</PH2_5> <CO>string</CO> <QuailtyZhiShu>int</QuailtyZhiShu> <QuailtyZhuangKuang>string</QuailtyZhuangKuang> <QuailtyLevel>string</QuailtyLevel> <ShouYaoWRW>string</ShouYaoWRW> <JingDu>string</JingDu> <WeiDu>string</WeiDu> <CityName>string</CityName> <KongQiQualityLevel>int</KongQiQualityLevel> <StationOrder>string</StationOrder> <Aqi>double</Aqi> <vel>double</vel> <date_Time>dateTime</date_Time> <IsIAQI>int</IsIAQI> <ZHZS>string</ZHZS> </AirAutomaticStation> </selectAirStationByCityNameResult> </selectAirStationByCityNameResponse> </soap:Body></soap:Envelope>3.当获得回复后,跳转Map界面:
解析对象,获取经纬度,其他的信息装在List中;
String jinDu = "";
String weiDu = "";
List<String> showData;
if (getIntent().getSerializableExtra("data") != null) {
Map<String, String> map = new LogicService(aty).parseSoapObject((SoapObject) getIntent().getSerializableExtra("data"));
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
showData = new ArrayList<String>();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
if (entry.getKey().equals("JingDu")) {
jinDu = entry.getValue();
} else if (entry.getKey().equals("WeiDu")) {
weiDu = entry.getValue();
} else {
showData.add(entry.getKey() + " : " + entry.getValue());
}
}
setDataOnMap(jinDu, weiDu, showData);
}
String weiDu = "";
List<String> showData;
if (getIntent().getSerializableExtra("data") != null) {
Map<String, String> map = new LogicService(aty).parseSoapObject((SoapObject) getIntent().getSerializableExtra("data"));
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
showData = new ArrayList<String>();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
if (entry.getKey().equals("JingDu")) {
jinDu = entry.getValue();
} else if (entry.getKey().equals("WeiDu")) {
weiDu = entry.getValue();
} else {
showData.add(entry.getKey() + " : " + entry.getValue());
}
}
setDataOnMap(jinDu, weiDu, showData);
}
将经纬度设置到MapView控件中,将其他的文字以Adapter或直接截断分行的方式通过cavas 和paint 将文本以"覆盖物"的形式显示在地图上;
4. StringBuffer sb = new StringBuffer();
map_map_view.setBuiltInZoomControls(true);
MapController mMapController = map_map_view.getController();
GeoPoint point = new GeoPoint((int)(Integer.parseInt(jinDu) * 1E6),(int)(Integer.parseInt(weiDu) * 1E6));
mMapController.setCenter(point);
mMapController.setZoom(12);
Paint paint = new Paint();
Bitmap bitmap = Bitmap.createBitmap(
getWindowManager().getDefaultDisplay().getWidth(),
getWindowManager().getDefaultDisplay().getHeight(),
Bitmap.Config.ARGB_8888);//配置
if (showData != null) {
for (String str : showData) {
sb.append(str).append("/n");
}
}
OverView view = new OverView(aty, paint);
Canvas c = new Canvas();
c.drawText(sb.toString(), 0, 0, view.getmPaint());
map_map_view.getOverlays().add(view);
map_map_view.setBuiltInZoomControls(true);
MapController mMapController = map_map_view.getController();
GeoPoint point = new GeoPoint((int)(Integer.parseInt(jinDu) * 1E6),(int)(Integer.parseInt(weiDu) * 1E6));
mMapController.setCenter(point);
mMapController.setZoom(12);
Paint paint = new Paint();
Bitmap bitmap = Bitmap.createBitmap(
getWindowManager().getDefaultDisplay().getWidth(),
getWindowManager().getDefaultDisplay().getHeight(),
Bitmap.Config.ARGB_8888);//配置
if (showData != null) {
for (String str : showData) {
sb.append(str).append("/n");
}
}
OverView view = new OverView(aty, paint);
Canvas c = new Canvas();
c.drawText(sb.toString(), 0, 0, view.getmPaint());
map_map_view.getOverlays().add(view);
相关连接:1.http://218.60.147.62/aqizx_ws/webservice/AndroidWebService.asmx?op=selectAirStationByCityName
2.http://api.tianditu.com/api-new/home.html
0 0
- Soap请求获取指定城市的天气情况并在天地图API Map中显示
- java调用webservice获取指定城市天气情况的例子
- 获取指定城市的天气
- 在安卓中获取一个城市的天气情况
- flex webservice获取城市的天气情况
- [Android] AlertDialog获取网上天气并显示各城市天气
- Android 获取指定城市的天气实况
- java调用webservice天气预报(SOAP请求的方式获取天气信息并解析返回的XML)
- java调用webservice天气预报(SOAP请求的方式获取天气信息并解析返回的XML)
- java调用webservice天气预报(SOAP请求的方式获取天气信息并解析返回的XML)
- Android使用"中国天气网"API数据通过城市名称获取天气情况
- Android使用"中国天气网"API数据通过城市名称获取天气情况
- 利用MFC库获取指定城市的天气实况
- 【手机+PC】获取用户地理位置、显示获取城市的天气
- android webservice获取城市天气情况
- android webservice获取城市天气情况
- android webservice获取城市天气情况
- android webservice获取城市天气情况
- 使用httpclient、htmlcleaner 、xpath 采集新浪微博3G站点数据
- JVM 优化经验总结
- HttpClient 模拟登录手机版新浪微博
- ImageView.ScaleType设置图解
- HttpClient 模拟登录Web版新浪微博
- Soap请求获取指定城市的天气情况并在天地图API Map中显示
- ajax 初探
- Fiddler 实现手机的抓包
- hdu 2089 不要62(基础)
- org.hibernate.HibernateException: connnection proxy not usable after transaction
- jQuery异步框架探究1:jQuery._Deferred方法
- [阿里笔试] 2016阿里校招业务性产品经理(商业领域)笔试题
- 针对TQ部分ARM开发板中QTCPServer不能接受数据的问题
- webdriver报不可见元素异常方法总结