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