5
मैं उपयोगकर्ता एक मार्कर डाल करने के लिए जाने के लिए GeoPoint भेज सकते हैं और अगर वह एक और मार्कर डाल मैं निकाल देंगे एक और मार्कर तो:एक और गतिविधि
मैं इस मार्कर का geoPoint लेने के लिए और एक और गतिविधि को भेजने के लिए करना चाहते हैं स्ट्रिंग के रूप में यह मेरा कोड है,
कैसे मैं एक और गतिविधि
public class AndroidLocationActivity extends MapActivity {
private MapView map=null;
private MyLocationOverlay me=null;
private LocationManager locationManager;
private GeoPoint markerGP = null;
private boolean markerAdded = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
map=(MapView)findViewById(R.id.mapview);
map.getController().setCenter(getPoint(40.76793169992044,
-73.98180484771729));
map.getController().setZoom(17);
map.setBuiltInZoomControls(true);
Drawable marker=getResources().getDrawable(R.drawable.marker);
marker.setBounds(0, 0, marker.getIntrinsicWidth(),
marker.getIntrinsicHeight());
map.getOverlays().add(new SitesOverlay(marker));
myLocation();
}
@Override
public void onResume() {
super.onResume();
me.enableCompass();
}
@Override
public void onPause() {
super.onPause();
// markerAdded = false;
me.disableCompass();
}
@Override
protected boolean isRouteDisplayed() {
return(false);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_S) {
map.setSatellite(!map.isSatellite());
return(true);
}
else if (keyCode == KeyEvent.KEYCODE_Z) {
map.displayZoomControls(true);
return(true);
}
return(super.onKeyDown(keyCode, event));
}
public void myLocation()
{
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, new GeoUpdateHandler());
me = new MyLocationOverlay(this, map);
me.enableMyLocation();
map.getOverlays().add(me);
map.invalidate();
me.runOnFirstFix(new Runnable() {
public void run() {
map.getController().animateTo(
me.getMyLocation());
}
});
}
private GeoPoint getPoint(double lat, double lon) {
return(new GeoPoint((int)(lat*1000000.0),
(int)(lon*1000000.0)));
}
private class SitesOverlay extends ItemizedOverlay<OverlayItem> {
private List<OverlayItem> items=new ArrayList<OverlayItem>();
private Drawable marker=null;
private OverlayItem inDrag=null;
private ImageView dragImage=null;
private int xDragImageOffset=0;
private int yDragImageOffset=0;
private int xDragTouchOffset=0;
private int yDragTouchOffset=0;
private boolean moved = true;
public SitesOverlay(Drawable marker) {
super(marker);
this.marker=marker;
dragImage=(ImageView)findViewById(R.id.drag);
xDragImageOffset=dragImage.getDrawable().getIntrinsicWidth()/2;
yDragImageOffset=dragImage.getDrawable().getIntrinsicHeight();
populate();
}
@Override
protected OverlayItem createItem(int i) {
return(items.get(i));
}
@Override
public void draw(Canvas canvas, MapView mapView,
boolean shadow) {
super.draw(canvas, mapView, shadow);
boundCenterBottom(marker);
}
@Override
public int size() {
return(items.size());
}
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView) {
final int action=event.getAction();
final int x=(int)event.getX();
final int y=(int)event.getY();
GeoPoint pt=map.getProjection().fromPixels(x-xDragTouchOffset,
y-yDragTouchOffset);
boolean result=false;
if (action==MotionEvent.ACTION_DOWN) {
moved = false;
for (OverlayItem item : items) {
Point p=new Point(0,0);
inDrag = null;
map.getProjection().toPixels(item.getPoint(), p);
if (hitTest(item, marker, x-p.x, y-p.y)) {
result=true;
inDrag=item;
items.remove(inDrag);
populate();
xDragTouchOffset=0;
yDragTouchOffset=0;
setDragImagePosition(p.x, p.y);
dragImage.setVisibility(View.VISIBLE);
xDragTouchOffset=x-p.x;
yDragTouchOffset=y-p.y;
break;
}
}
}
else if (action==MotionEvent.ACTION_MOVE) {
moved = true;
if(inDrag!=null)
{
setDragImagePosition(x, y);
result=true;
}
}
//Drop dragged marker
else if (action==MotionEvent.ACTION_UP && inDrag!=null) {
dragImage.setVisibility(View.GONE);
OverlayItem toDrop=new OverlayItem(pt, inDrag.getTitle(),
inDrag.getSnippet());
items.add(toDrop);
populate();
inDrag=null;
result=true;
}
//Add new marker to the map
else if (action==MotionEvent.ACTION_UP && inDrag == null) {
if(!markerAdded && !moved)
{
//GeoPoint `pt`
markerGP = pt;
OverlayItem toDrop=new OverlayItem(pt, "TITLE", "SNIPPET");
items.add(toDrop);
populate();
markerAdded = true;
inDrag=null;
result=true;
}
}
return(result || super.onTouchEvent(event, mapView));
}
private void setDragImagePosition(int x, int y) {
RelativeLayout.LayoutParams lp=
(RelativeLayout.LayoutParams)dragImage.getLayoutParams();
lp.setMargins(x-xDragImageOffset-xDragTouchOffset,
y-yDragImageOffset-yDragTouchOffset, 0, 0);
dragImage.setLayoutParams(lp);
}
}
public class GeoUpdateHandler implements LocationListener {
@Override
public void onLocationChanged(Location location) {
int lat = (int) (location.getLatitude() * 1E6);
int lng = (int) (location.getLongitude() * 1E6);
GeoPoint point = new GeoPoint(lat, lng);
map.getController().animateTo(point); //map.getController().setCenter(point);
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
}
के इरादे से markerGP = pt;
markerGP भेज सकते हैं आप मेरे कोड को ठीक कर सकते हैं? मैं यहाँ वास्तव में अटक गया हूँ !! ऐसा करने के लिए
मुझे इसे कहां रखना चाहिए? – Maha