如何从wunderground API获取数据并在Android屏幕上显示?

时间:2014-07-11 22:20:29

标签: java android wunderground

目前我在Android Studio中有一张地图的图片,我想知道如何从wunderground中提取信息并将其显示在每个位置的地图顶部。

This是包含一些示例代码的网站。

1 个答案:

答案 0 :(得分:1)

这取决于数据类型。 Concider是一个从JSON提要中提取eathquake数据位置的示例。

try {
        JSONObject object = (JSONObject) new JSONTokener(JSONResponse)
                .nextValue();
        JSONArray earthquakes = object.getJSONArray("features");

        for (int i = 0; i < earthquakes.length(); i++) {
            JSONObject tmp = (JSONObject) earthquakes.get(i);
            //Log.i("JSON: ",tmp.toString());

            JSONObject geometry = tmp.getJSONObject("geometry");
            JSONArray coords = geometry.getJSONArray("coordinates");
            JSONObject properties = tmp.getJSONObject("properties");

            //Log.i("Data", "Coords:"+coords.getString(0) + " "+ coords.getString(1)+"\n Place:"+properties.getString("place")+ " Mag:"+properties.getString("mag"));

            if(coords.getString(0) != "" && coords.getString(1) != ""){
                result.add(new EarthQuakeRec(
                        Float.parseFloat(coords.getString(1)),//Lat
                        Float.parseFloat(coords.getString(0)),//Long
                        Float.parseFloat(properties.getString("mag")),//Magnitude
                        properties.getString("place")
                    )
                );
            }           
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }

JSON结构看起来像这样:

{
"id": "nc72241526",
"type": "Feature",
"geometry": {
    "type": "Point",
    "coordinates": [
        -122.0102,
        37.6053,
        6
    ]
},
"properties": {
    "detail": "http://earthquake.usgs.gov/earthquakes/feed/v1.0/detail/nc72241526.geojson",
    "type": "earthquake",
    "net": "nc",
    "tsunami": null,
    "sources": ",nc,",
    "title": "M 3.0 - 1km NE of Union City, California",
    "time": 1403371328500,
    "updated": 1403374699020,
    "mag": 3,
    "types": ",dyfi,focal-mechanism,general-link,geoserve,nearby-cities,origin,phase-data,scitech-link,tectonic-summary,",
    "place": "1km NE of Union City, California",
    "status": "AUTOMATIC",
    "ids": ",nc72241526,",
    "alert": null,
    "rms": 0.17,
    "code": "72241526",
    "url": "http://earthquake.usgs.gov/earthquakes/eventpage/nc72241526",
    "magType": "Md",
    "mmi": null,
    "cdi": 3.8,
    "tz": -420,
    "felt": 319,
    "nst": 75,
    "dmin": 0.03593261,
    "gap": 25.2,
    "sig": 260
}

}

然后,您将从JSONObject类开始,并向下钻取到感兴趣的数据点。使用Log类可以帮助您排除故障并测量遍历数据结构的进度。在我的例子中,它被注释掉了。

对于XML,你可以尝试一下这个:

        try {

        // Create the Pull Parser
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        XmlPullParser xpp = factory.newPullParser();

        // Set the Parser's input to be the XML document in the HTTP Response
        xpp.setInput(new InputStreamReader(response.getEntity()
                .getContent()));

        // Get the first Parser event and start iterating over the XML document 
        int eventType = xpp.getEventType();

        while (eventType != XmlPullParser.END_DOCUMENT) {

            if (eventType == XmlPullParser.START_TAG) {
                startTag(xpp.getName());
            } else if (eventType == XmlPullParser.END_TAG) {
                endTag(xpp.getName());
            } else if (eventType == XmlPullParser.TEXT) {
                text(xpp.getText());
            }
            eventType = xpp.next();
        }
        return mResults;
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }

向你投掷很多东西,但你并没有给出太多特异性。希望有所帮助。 ;)