Java 将关联城市数据从Web服务器提取到设备

Java 将关联城市数据从Web服务器提取到设备,java,php,android,mysql,xml,Java,Php,Android,Mysql,Xml,我知道关于这个问题有数百个问题,但我需要得到所有这些问题的答案 我的申请摘要(不是我的问题): 一个应用程序,它有一个地图,可以在地图上创建多个标记(兴趣点)。当用户走进标记时,它会激发有关该位置的信息。这些信息包括地点的标题、使用SD卡图像的幻灯片、一些音频(带有控件)和一个小文本描述。 现在我的大问题是:我需要创建将所有这些数据下载到我的设备的最佳方式! 我想用PHP创建的XML文件下载所有数据库。 为什么我认为这不会按我想要的方式工作。 我需要过滤我希望用户下载的信息。 嗯,用户只需勾

我知道关于这个问题有数百个问题,但我需要得到所有这些问题的答案

我的申请摘要(不是我的问题): 一个应用程序,它有一个地图,可以在地图上创建多个标记(兴趣点)。当用户走进标记时,它会激发有关该位置的信息。这些信息包括地点的标题、使用SD卡图像的幻灯片、一些音频(带有控件)和一个小文本描述。


现在我的大问题是:我需要创建将所有这些数据下载到我的设备的最佳方式!


我想用PHP创建的XML文件下载所有数据库。
为什么我认为这不会按我想要的方式工作。
我需要过滤我希望用户下载的信息。

嗯,用户只需勾选他想要下载的信息,例如有信息的几个城市。

为此,我想创建一个这样的对话框

用户选择所需城市后,应用程序必须根据所选城市接收信息。

我在这里试图找到一个最好的解决方法。

我只有一个MySQL数据库,其结构如下:
id | name | radius | coords


我认为,通过添加一个关于与之相关的城市的专栏,可以锻炼身体。

关于信息数据,它将具有以下文件夹结构:
/sdcard/{app\u name}/{id\u of_point}/{.jpg/.mp3/.txt}


对于SD卡,我将所有这些信息压缩在一个zip中,并考虑将其下载到设备中,然后将其解压缩到SD卡中的某个位置。

张贴所有的信息,我需要你们给我最好的做法这样做


提前谢谢

例如,您需要使用一个扩展覆盖类的类(请注意,此代码用于获取json而不是xml)


在上面的类中,只要用户点击一个地理点,就可以添加任何类型的处理程序。

到目前为止,我还没有参与过这个项目

所以经过所有的研究,我找到了最好的方法

我使用了JSON:)

首先,使用json数据填充multi-select对话框(处理它)
其次,在选择之后,使用json获取与所选城市关联的所有数据




现在我的问题已经解决了!:)

你知道如何使用location overlay类吗?我所需要的只是将所有数据下载到设备的逻辑。所有的东西,以显示地图,标记,proximityalerts等已经编码和工作的伟大!谢谢你的帮助,但是所有的东西都已经被我编码好了,而且工作得很好。我需要创建一个活动来下载所有数据,然后再显示包含所有数据的地图:)你在解析什么xml或json?我想创建一个xml。但是我正在尝试找出哪种方法更好:)Json应该是xml的无脂肪版本,如果您需要从webservice解析Json的代码,而不是我建议您从服务器得到的响应中尝试此方法,您可以解析出您需要的相关项,对于xml,请尝试此方法
public class LocationOverlay extends ItemizedOverlay<OverlayItem> {

private ArrayList<OverlayItem> overlayItemList = new ArrayList<OverlayItem>();
Context context;

public LocationOverlay(Drawable marker, Context c) {
    super(boundCenterBottom(marker));
    // TODO Auto-generated constructor stub
    populate();
    context = c;
}

@Override
protected boolean onTap(int index) {

    Toast.makeText(context,
            "Touch on marker: \n" + overlayItemList.get(index).getTitle(),
            Toast.LENGTH_LONG).show();
    // code for passing storeid's
    OverlayItem item = overlayItemList.get(index);
    String idex = (item.getTitle());
    Intent idtent = new Intent(context, StoreDetails.class);
    idtent.putExtra("&", idex);
    context.startActivity(idtent);
    return true;

}

public void addItem(GeoPoint p, String title) {
    OverlayItem newItem = new OverlayItem(p, title, null);
    overlayItemList.add(newItem);
    populate();

}

@Override
protected OverlayItem createItem(int i) {
    // TODO Auto-generated method stub
    return overlayItemList.get(i);
}

@Override
public int size() {
    // TODO Auto-generated method stub
    return overlayItemList.size();
}
Double jlat = j4.getDouble("Latitude");
                    Double jlon = j4.getDouble("Longitude");
                    Log.v("Latitude", jlat + "n");
                    Log.v("Longitude", jlon + "n");

                    // Get the distance between lat long
                    Location locationA = new Location("point A");

                    locationA.setLatitude(slat);
                    locationA.setLongitude(slon);

                    Location locationB = new Location("point B");

                    locationB.setLatitude(jlat);
                    locationB.setLongitude(jlon);

                    distance = (int) locationA.distanceTo(locationB);
                    String str = " (" + String.valueOf(distance) + " meters)";
                    Log.v("Distance", str);

                    // adjust drawable params
                    Drawable marker = getResources().getDrawable(
                            android.R.drawable.star_big_on);
                    Drawable user = getResources().getDrawable(
                            android.R.drawable.arrow_down_float);
                    int userWidth = user.getIntrinsicWidth();
                    int userHeight = user.getIntrinsicHeight();
                    user.setBounds(0, userHeight, userWidth, 0);
                    int markerWidth = marker.getIntrinsicWidth();
                    int markerHeight = marker.getIntrinsicHeight();
                    marker.setBounds(0, markerHeight, markerWidth, 0);

                    // refernc to overlay class
                    LocationOverlay myItemizedOverlay = new LocationOverlay(
                            marker, MapActivity.this);
                    LocationOverlay myItemizedOverlay1 = new LocationOverlay(
                            user, MapActivity.this);
                    mapView.getOverlays().add(myItemizedOverlay);
                    mapView.getOverlays().add(myItemizedOverlay1);

                    // create geopoint for user
                    GeoPoint usr = new GeoPoint((int) (slat * 1e6),
                            (int) (slon * 1e6));
                    // add overlay(user) to user's location
                    myItemizedOverlay1.addItem(usr, "User");
                    mc.animateTo(usr);