目前我在Android Studio中有一张地图的图片,我想知道如何从wunderground中提取信息并将其显示在每个位置的地图顶部。
This是包含一些示例代码的网站。
答案 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();
}
向你投掷很多东西,但你并没有给出太多特异性。希望有所帮助。 ;)