คือตอนนี้กำลังทดลองทำตามเว็บ
แต่อยากจะเปลี่ยนวิธีการ อยากให้ค่า lat/long ไปอยู่ใน EditText แบบอัติโนมัติ
เมื่อคลิ๊กที่แผนที่ ตอนนี้มันแสดงแบบ Toast อยู่
พอจะแนะนำได้ไหมครับ ว่าต้องแก้ตรงไหน ผมได้เพิ่มส่วน EditText
ลงไว้ในเมธอด onTouchEvent พอใช้ setText มัน Force Close ตอนรันครับ
อันนี้เป็นโค๊ดที่ผมลองใส่ EditText แล้วแต่ผมคอมเม้นไว้
package pakorn.win.htc.goglemaps;
import java.util.List;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
public class ZGoogleMapsActivity extends MapActivity {
MapView mapView;
MapController mc;
GeoPoint p;
EditText myLat;
ListView myLisViewtLat;
class MapOverlay extends com.google.android.maps.Overlay
{
@Override
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
//---translate the GeoPoint to screen pixels---
Point screenPts = new Point();
mapView.getProjection().toPixels(p, screenPts);
//---add the marker---
Bitmap bmp = BitmapFactory.decodeResource(
getResources(), R.drawable.pushpin);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView)
{
//---when user lifts his finger---
if (event.getAction() == 1) {
GeoPoint p = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Toast.makeText(getBaseContext(),
p.getLatitudeE6() / 1E6 + "," +
p.getLongitudeE6() /1E6 ,
Toast.LENGTH_LONG).show();
// myLat.setText((int)(p.getLatitudeE6() / 1E6));
}
return false;
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapView);
LinearLayout zoomLayout = (LinearLayout) findViewById(R.id.zoom);
myLat = (EditText)findViewById(R.id.myEditText1);
mapView.setSatellite(true);
View zoomView = mapView.getZoomControls();
zoomLayout.addView(zoomView, new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
mapView.displayZoomControls(true);
mc = mapView.getController();
String coordinate[] = { "1.352566007", "103.78921587" };
double lat = Double.parseDouble(coordinate[0]);
double lng = Double.parseDouble(coordinate[1]);
p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
mc.animateTo(p);
mc.setZoom(17);
//---Add a location marker---
MapOverlay mapOverlay = new MapOverlay();
List listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
mapView.invalidate();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
ผมควรจะต้องเพิ่มตรงส่วนไหน บ้างครับ
ขอบคุณครับ