ちょっと私の現在の場所に表示する画像を追加したいのですが、私のコードはオーバーレイアイテムを追加しましたが、私の現在の場所に表示されるオーバーレイアイテム、私は私のcurentの場所にアイテムを追加するbmpを追加してくださいいずれかをチェックアウトすることができます!!!!だから、なぜ私の現在の場所に表示されないのですか?なぜ私の現在の位置にオーバーレイアイテムが表示されないのですか?なぜこのコードでは現在の場所にオーバーレイアイテムを表示できないのですか
enter code here
package tryanabtry.opa;
import java.util.List;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
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 com.google.android.maps.OverlayItem;
public class tryanabtry extends MapActivity
{
private MapView mapView;
private MapController mc;
int error=100;
GeoPoint p, p2, p3, p4;
List<Overlay> mapOverlays;
Drawable drawable, drawable2 , drawable3, drawable4;
HelloItemizedOverlay itemizedOverlay, itemizedOverlay2 , itemizedOverlay3, itemizedOverlay4;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
try{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* Use the LocationManager class to obtain GPS locations */
LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
mapView = (MapView) findViewById(R.id.mapView);
// enable Street view by default
mapView.setStreetView(true);
mapView.setBuiltInZoomControls(true);
mc = mapView.getController();
mc.setZoom(12);
addOverLays();
}
catch(Exception e){
Log.d("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",e.getMessage());
}
}
public void addOverLays(){
String [] coordinates = {"31.216487288475037","29.932637214660645" ,"30.084123015403748", "51.5002" , "-0.1262","31.337149143218994"};
double lat = 29.98739718380868,lat2 = 29.98763859272003,lat3=29.987574219703674,lat4=29.98718498160553;
double log = 31.442527770886084,
log2 = 31.44235074520111,
log3=31.44225418567575,log4=31.442527770996094;
p = new GeoPoint((int) (lat * 1E6), (int) (log * 1E6));
p2 = new GeoPoint((int) (lat2 * 1e6), (int) (log2 * 1e6));
p3=new GeoPoint((int) (lat3 * 1e6), (int) (log3 * 1e6));
p4=new GeoPoint((int) (lat4 * 1e6), (int) (log4 * 1e6));
mapOverlays = mapView.getOverlays();
drawable = this.getResources().getDrawable(R.drawable.vitblue);
drawable2 = this.getResources().getDrawable(R.drawable.ballon);
drawable3 = this.getResources().getDrawable(R.drawable.blackaaaaa);
drawable4 = this.getResources().getDrawable(R.drawable.vitblue);
itemizedOverlay = new HelloItemizedOverlay(drawable,this);
itemizedOverlay2 = new HelloItemizedOverlay(drawable2,this);
itemizedOverlay3 = new HelloItemizedOverlay(drawable3,this);
itemizedOverlay4 = new HelloItemizedOverlay(drawable4,this);
OverlayItem overlayitem = new OverlayItem(p, "Cairo", " over1");
OverlayItem over2 = new OverlayItem(p2, "ulm", "over2");
OverlayItem over3 = new OverlayItem(p3, "offff", "over3");
OverlayItem over4 = new OverlayItem(p4, "offff", "over4");
itemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedOverlay);
itemizedOverlay2.addOverlay(over2);
mapOverlays.add(itemizedOverlay2);
itemizedOverlay3.addOverlay(over3);
mapOverlays.add(itemizedOverlay3);
itemizedOverlay4.addOverlay(over4);
mapOverlays.add(itemizedOverlay4);
mc.setZoom(17);
mc.animateTo(p4);
}
/*クラス現在地リスナー*/
public class MyLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc)
{
GeoPoint point = new GeoPoint( (int) (loc.getLatitude() * 1E6),
(int) (loc.getLongitude() * 1E6));
String Text = "My current location is: " +
"Latitud ="+ loc.getLatitude() +
"Longitud =" + loc.getLongitude();
Toast.makeText(getApplicationContext(),
Text,
Toast.LENGTH_SHORT).show();
///////////////////////////////////////////////////////////////////////////////////////////////WHAT I ADDED
drawable3 = this.getResources().getDrawable(R.drawable.blackaaaaa);
// itemizedOverlay3 = new HelloItemizedOverlay(drawable3,this);
OverlayItem over3 = new OverlayItem(point, "offff", "over3");
itemizedOverlay3.addOverlay(over3);
mapOverlays.add(itemizedOverlay3);
//////////////////////////////////////////////////////////////////////
//// THE LINE NEW HELLOITEMIZEDOVERLAY !! GET AN ERROR !! ANY SOLUTION
mc.animateTo(point);
if (loc.getLatitude() * 1E6>=p.getLatitudeE6()-error&&loc.getLongitude() * 1E6 < p.getLatitudeE6()+error)
mapView.getOverlays().remove(itemizedOverlay);
mapView.invalidate();
///////////////////////////////
class MapOverlay extends Overlay
{
private GeoPoint pointToDraw;
public void setPointToDraw(GeoPoint point) {
pointToDraw = point;
}
public GeoPoint getPointToDraw() {
return pointToDraw;
}
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
super.draw(canvas, mapView, shadow);
// convert point to pixels
Point screenPts = new Point();
mapView.getProjection().toPixels(pointToDraw, screenPts);
// add marker
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.red);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 24, null); // 24 is the height of image
return true;
}
}
}
private Resources getResources() {
// TODO Auto-generated method stub
return null;
}
private void DoubletoString(double latitude) {
// TODO Auto-generated method stub
}
public void onProviderDisabled(String provider)
{
Toast.makeText(getApplicationContext(),
"Gps Disabled",
Toast.LENGTH_SHORT).show();
}
public void onProviderEnabled(String provider)
{
Toast.makeText(getApplicationContext(),
"Gps Enabled",
Toast.LENGTH_SHORT).show();
}
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
protected boolean isRouteDisplayed() {
return false;
}
}/* End of Class MyLocationListener */
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
//////////////////////////// ///////////////////////////////////////////////////////////////// /////////
enter code here
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): Uncaught handler: thread main exiting due to uncaught exception
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): java.lang.NullPointerException
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): at tryanabtry.opa.tryanabtry$MyLocationListener.onLocationChanged(tryanabtry.java:182)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:181)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:114)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:130)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): at android.os.Handler.dispatchMessage(Handler.java:99)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): at android.os.Looper.loop(Looper.java:123)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): at android.app.ActivityThread.main(ActivityThread.java:3948)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): at java.lang.reflect.Method.invokeNative(Native Method)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): at java.lang.reflect.Method.invoke(Method.java:521)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
05-08 17:12:06.430: ERROR/AndroidRuntime(1435): at dalvik.system.NativeStart.main(Native Method)
コーディングスタイルを改善するようにしてください。 Eclipseは、少なくとも読みやすいコードスタイルを生成する自動書式設定をサポートしています。あなたがここで提供したものはほんのわかりやすいです...エラーが出たら、あなたからのエラーメッセージをeclipseのLogCatビューに投稿してください。あなたの言語で作業しています。そういう文章を読むのが大変です。 – WarrenFaith
drawable3 = this.getResources ().getDrawable(R.drawable.blackaaaaa); // itemizedOverlay3 =新しいHelloItemizedOverlay(drawable3、this); オーバーレイアイテムover3 =新しいオーバーレイアイテム(ポイント、 "offff"、 "over3"); itemizedOverlay3.addOverlay(over3); mapOverlays.add(itemizedOverlay3); !! が、エラーを取得しhelloitemizedoverlay私は\t公共HelloItemizedOverlay(Drawableのdrawable3、 \t \t \t MyLocationListener myLocationListener)でconstructurを追加するとき、私は {コンストラクタHelloItemizedOverlay(Drawableの、tryanabtry.MyLocationListener)が定義されていない – uouo
ヘルプをしてくださいneeedしてください。 \t \t // TODO自動生成コンストラクタスタブ \t} エラーが赤い線で下線 – uouo