緯度と経度を取得する方法について教えてください。私が言いたいのは、緯度と経度を Web から (XMLPullParser を使用して) 解析したということです。ここで、私の最大の問題は、すべての値 (lat と lon) を取得し、それらをマップにプロットすることです。助けてください!
ここに私のパーサークラスがあります:
public class Parser {
//Feed Parsing Method
public ArrayList<Bakery> parse(String url) {
//Array of Episode Objects
ArrayList<Bakery> bakeries = null;
try {
//Encode the URL into a URL Object
URL bakery_feed_url = new URL(url);
//Open a Connection to the feed
XmlPullParser parser = Xml.newPullParser();
try {
parser.setInput(bakery_feed_url.openConnection().getInputStream(), null);
} finally {
}
int event_type = parser.getEventType();
Bakery current_bakery = null;
boolean done = false;
//Parse the feed, start reading throughout the feed from top to bottom
while (event_type != XmlResourceParser.END_DOCUMENT && !done){
String tag_name = null;
/*
lat = Integer.parseInt(parser.getAttributeValue(null,"lat"));
lon = Integer.parseInt(parser.getAttributeValue(null,"lon"));
grade = Integer.parseInt(parser.getAttributeValue(null,"grade"));
*/
switch (event_type){
//Found the start of the feed
case XmlResourceParser.START_DOCUMENT:
bakeries = new ArrayList<Bakery>();
break;
//Found a start tag
case XmlResourceParser.START_TAG:
//apply the data to our Episode object based on the tag name
tag_name = parser.getName();
if(tag_name.equalsIgnoreCase("place")){
current_bakery = new Bakery();
}else if(current_bakery != null){
if (tag_name.equalsIgnoreCase("phone_number")){
current_bakery.setPhone(parser.nextText());
}else if(tag_name.equalsIgnoreCase("city")){
current_bakery.setCity(parser.nextText());
}else if(tag_name.equalsIgnoreCase("province")){
current_bakery.setState(parser.nextText());
}else if(tag_name.equalsIgnoreCase("address")){
current_bakery.setAddress(parser.nextText());
}else if(tag_name.equalsIgnoreCase("lat")){
current_bakery.setLatitude(parser.nextText());
//double lat = Integer.parseInt(parser.getAttributeValue(null,"lat"));
// current_bakery.setLater(Integer.parseInt(parser.getAttributeValue(null, "lat")));
}else if(tag_name.equalsIgnoreCase("postal_code")){
current_bakery.setZip(parser.nextText());
}else if(tag_name.equalsIgnoreCase("lng")){
current_bakery.setLongitude(parser.nextText());
}else if(tag_name.equalsIgnoreCase("name")){
current_bakery.setPlace_name(parser.nextText());
}
}
break;
//An end tag has been reached
case XmlResourceParser.END_TAG:
tag_name = parser.getName();
//End of an Episode Item
if (tag_name.equalsIgnoreCase("place") && current_bakery != null){
bakeries.add(current_bakery);
//Reached the end of all bakeries, no more data to collect
} else if (tag_name.equalsIgnoreCase("places")){
done = true;
}
break;
}
event_type = parser.next();
}
} catch (Exception e) {
throw new RuntimeException(e);
}
//Return the Episode Array
return bakeries;
}
}
ご覧のとおり、lat と lon を正しく解析していますが、すべて文字列として取得しているため、int に変換してから OverlayItems クラスに渡すのに問題があります。これをあまり複雑にしないことを願っています。