我的想法是这样的在一个Activity1中显示地图, 然后用菜单通过(Intent)调用Activity2用来获取经纬度坐标点, 然后返回到Activity1中,在Activity1中通过onActivityResult方法获取坐标值,然后更新Activity1中的地图显示这个坐标点。class OverlayTest extends ItemizedOverlay<OverlayItem>
{
//用MapView构造ItemizedOverlay
public OverlayTest(Drawable ,MapView mapView)
{
super(,mapView);
}
protected boolean onTap(int index)
{
//在此处理item点击事件
System.out.println("item onTap: "+index);
return true;
}
public boolean onTap(GeoPoint pt, MapView mapView)
{
//在此处理MapView的点击事件,当返回 true时
super.onTap(pt,mapView);
return false;
}
}private void AddItemizedOverlay()
{
GeoPoint p1 = new GeoPoint((int) (39.0506 * 1E6), (int) (116.856053 * 1E6)); //为了方便测试把坐标写死了
Drawable = getResources().getDrawable(R.drawable.icon_a);
OverlayItem item1 = new OverlayItem(p1,"item1","item1");
OverlayTest itemOverlay = new OverlayTest(, mMapView);
mMapView.getOverlays().clear();
itemOverlay.addItem(item1);
mMapView.getOverlays().add(itemOverlay);
mMapController.setCenter(p1);
mMapView.refresh();
}
/*Activity1跳到Activity2获取坐标界面*/
case R.id.menu2:
Intent it=new Intent();
it.setClass(this, GetLocInfo.class);
startActivityForResult(it,23);
break;//Activity2返回坐标
Intent data=new Intent();
data.putExtra("latitude", str1[1].toString());
data.putExtra("lontitude", str2[1].toString());
setResult(23,data);
finish();
//Activity1获取Activity2取回的坐标protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode,resultCode,data);
//可以根据多个请求代码来作相应的操作
if(23==resultCode)
{
Double mLat1=Double.parseDouble(data.getExtras().getString("latitude"));
Double mLon1=Double.parseDouble(data.getExtras().getString("lontitude"));
Toast.makeText(this,"latitude:"+mLat1+"\nlontitude:"+mLon1,Toast.LENGTH_SHORT).show();
///////////////////////////////////////////////////////////////////////
AddItemizedOverlay(); //这里就是一点返应都没有
Toast.makeText(this,"asdfasdfasdf"Toast.LENGTH_SHORT).show(); //这个可以显示出来 /////////////////////////////////////////////////////////////////////
}
}
{
//用MapView构造ItemizedOverlay
public OverlayTest(Drawable ,MapView mapView)
{
super(,mapView);
}
protected boolean onTap(int index)
{
//在此处理item点击事件
System.out.println("item onTap: "+index);
return true;
}
public boolean onTap(GeoPoint pt, MapView mapView)
{
//在此处理MapView的点击事件,当返回 true时
super.onTap(pt,mapView);
return false;
}
}private void AddItemizedOverlay()
{
GeoPoint p1 = new GeoPoint((int) (39.0506 * 1E6), (int) (116.856053 * 1E6)); //为了方便测试把坐标写死了
Drawable = getResources().getDrawable(R.drawable.icon_a);
OverlayItem item1 = new OverlayItem(p1,"item1","item1");
OverlayTest itemOverlay = new OverlayTest(, mMapView);
mMapView.getOverlays().clear();
itemOverlay.addItem(item1);
mMapView.getOverlays().add(itemOverlay);
mMapController.setCenter(p1);
mMapView.refresh();
}
/*Activity1跳到Activity2获取坐标界面*/
case R.id.menu2:
Intent it=new Intent();
it.setClass(this, GetLocInfo.class);
startActivityForResult(it,23);
break;//Activity2返回坐标
Intent data=new Intent();
data.putExtra("latitude", str1[1].toString());
data.putExtra("lontitude", str2[1].toString());
setResult(23,data);
finish();
//Activity1获取Activity2取回的坐标protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode,resultCode,data);
//可以根据多个请求代码来作相应的操作
if(23==resultCode)
{
Double mLat1=Double.parseDouble(data.getExtras().getString("latitude"));
Double mLon1=Double.parseDouble(data.getExtras().getString("lontitude"));
Toast.makeText(this,"latitude:"+mLat1+"\nlontitude:"+mLon1,Toast.LENGTH_SHORT).show();
///////////////////////////////////////////////////////////////////////
AddItemizedOverlay(); //这里就是一点返应都没有
Toast.makeText(this,"asdfasdfasdf"Toast.LENGTH_SHORT).show(); //这个可以显示出来 /////////////////////////////////////////////////////////////////////
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货