2012-01-22 6 views
0

私は何かを修正するたびにエラーを見つけるためにすべてのコードとすべての質問を試しました。地図上をクリックしながら、マークを描き、GPSを使用してのTextViewでアドレスを取得し、この出力はthisのように見えると私はエミュレータに私のインターネット接続をテストし、それがGoogleマップが正常に表示されず、強制終了する

ここ

でlogcatエラー作品:

01-23 03:37:52.868: E/MapActivity(309): Couldn't get connection factory client 
    01-23 03:37:53.979: E/QemuSensors(309): data__poll: len=-1, errno=9: Bad file number 
    01-23 03:37:53.979: E/QemuSensors(309): data__poll: len=-1, errno=9: Bad file number 
    01-23 03:37:53.989: E/QemuSensors(309): data__poll: len=-1, errno=9: Bad file number 
    01-23 03:37:53.989: E/QemuSensors(309): data__poll: len=-1, errno=9: Bad file number 

こちらをコード:

public class Map extends MapActivity implements LocationListener { 

MapView map = null; 
long start; 
long end; 
MyLocationOverlay compass = null; 
MapController c; 
int x, y; 
GeoPoint g; 
Drawable d; 
LocationManager n; 
int lati = 0; 
int longi = 0; 
Customize cus; 
Drawable drawable; 
OverlayItem f; 
Location location; 
String add = ""; 
Criteria m; 

@Override 
protected void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.map); 
    map = (MapView) findViewById(R.id.mapid); 
    map.getController(); 
    map.setBuiltInZoomControls(true); 
    map.setStreetView(true); 
    map.getController().setZoom(19); 
    // map.setTraffic(true); 

    d = getResources().getDrawable(R.drawable.blue); 
    d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
    drawable = this.getResources().getDrawable(R.drawable.red); 
    drawable.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 

    map.getOverlays().add(new Customize(d)); 
    compass = new MyLocationOverlay(Map.this, map); 
    map.getOverlays().add(compass); 

    getLastLocation(); 

} 

public void getLastLocation() { 
    String provider = getBestProvider(); 
    location = n.getLastKnownLocation(provider); 

    if (location != null) { 
     setCurrentLocation(location); 
    } else { 
     Toast.makeText(this, "Location not yet acquired", Toast.LENGTH_LONG) 
       .show(); 
    } 
    ((TextView) findViewById(R.id.providerid)).setText("Provider :" 
      + getBestProvider()); 

} 

public String getBestProvider() { 

    n = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    m = new Criteria(); 
    m.setPowerRequirement(Criteria.NO_REQUIREMENT); 
    m.setAccuracy(Criteria.NO_REQUIREMENT); 
    String bestProvider = n.getBestProvider(m, false); 
    return bestProvider; 
} 

@Override 
protected void onPause() { 
    compass.disableCompass(); 
    super.onPause(); 
    n.removeUpdates(this); 

} 

@Override 
protected void onResume() { 
    compass.enableCompass(); 
    super.onResume(); 
    n.requestLocationUpdates(getBestProvider(), 500, 1, this); 
} 

class maps extends Overlay { 
    @Override 
    public boolean onTouchEvent(MotionEvent event, MapView mapView) { 
     // ---when user lifts his finger--- 

     if (event.getAction() == 1) { 
      g = mapView.getProjection().fromPixels((int) event.getX(), 
        (int) event.getY()); 
      Geocoder geoCoder = new Geocoder(getBaseContext(), 
        Locale.getDefault()); 
      try { 
       List<Address> addresses = geoCoder.getFromLocation(
         g.getLatitudeE6()/1E6, g.getLongitudeE6()/1E6, 
         1); 

       if (addresses.size() > 0) { 
        for (int i = 0; i < addresses.get(0) 
          .getMaxAddressLineIndex(); i++) 
         add += addresses.get(0).getAddressLine(i) + "\n"; 
        ((TextView) findViewById(R.id.address)).setText(add); 

       } 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return true; 
     } 
     return false; 

    } 

    /* 
    * public boolean draw(Canvas canvas, MapView mapView, boolean shadow, 
    * long when) { 
    * 
    * try{ super.draw(canvas, mapView, shadow); //---translate the GeoPoint 
    * to screen pixels--- g= new GeoPoint((int) (lati * 1E6), (int) (longi 
    * * 1E6)); Point screenPts = new Point(); 
    * mapView.getProjection().toPixels(g, screenPts); //---add the 
    * marker--- Bitmap bmp = BitmapFactory.decodeResource(getResources(), 
    * R.drawable.blue); canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, 
    * null); } catch(Exception h){ 
    * 
    * h.printStackTrace(); } finally{ 
    * 
    * map.setSatellite(!map.isSatellite()); 
    * 
    * } 
    * 
    * 
    * return true; } 
    */ 

} 

@Override 
protected boolean isRouteDisplayed() { 
    return false; 
} 

public void setCurrentLocation(Location location) { 
    lati = (int) (location.getLatitude() * 1E6); 
    longi = (int) (location.getLongitude() * 1E6); 
    g = new GeoPoint(lati, longi); 

    map.getOverlays().add(new Customize(drawable)); 

} 

@Override 
public void onLocationChanged(Location arg0) { 

    setCurrentLocation(arg0); 

} 

@Override 
public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub 
    Toast.makeText(this, "Provider Disabled", Toast.LENGTH_SHORT).show(); 

} 

@Override 
public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub 
    Toast.makeText(this, "Provider Enabled", Toast.LENGTH_SHORT).show(); 

} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub 
    Toast.makeText(this, "Staus Changed", Toast.LENGTH_SHORT).show(); 

} 

private GeoPoint getPoint(double lat, double lon) { 
    return (new GeoPoint((int) (lat * 1000000.0), (int) (lon * 1000000.0))); 
} 

public class Customize extends ItemizedOverlay<OverlayItem> { 

    ArrayList<OverlayItem> ar = new ArrayList<OverlayItem>(); 

    private Drawable defaultMarker = null; 

    public Customize(Drawable defaultMarker) { 
     super(defaultMarker); 
     this.defaultMarker = defaultMarker; 

     boundCenterBottom(defaultMarker); 

     ar.add(new OverlayItem(getPoint(40.748963847316034, 
       -73.96807193756104), "UN", "United Nations")); 
     ar.add(new OverlayItem(getPoint(40.76866299974387, 
       -73.98268461227417), "Lincoln Center", 
       "Home of Jazz at Lincoln Center")); 
     ar.add(new OverlayItem(getPoint(40.765136435316755, 
       -73.97989511489868), "Carnegie Hall", 
       "Where you go with practice, practice, practice")); 
     ar.add(new OverlayItem(getPoint(40.70686417491799, 
       -74.01572942733765), "The Downtown Club", 
       "Original home of the Heisman Trophy")); 
     ar.add(new OverlayItem(getPoint(lati, longi), " ", " ")); 

     populate(); 
    } 

    @Override 
    protected OverlayItem createItem(int i) { 
     // TODO Auto-generated method stub 
     return ar.get(i); 
    } 

    @Override 
    public int size() { 
     // TODO Auto-generated method stub 
     return ar.size(); 
    } 

    protected boolean onTap(int i) { 

     Toast.makeText(Map.this, ar.get(i).getSnippet(), Toast.LENGTH_SHORT) 
       .show(); 
     return (true); 
    } 

} 
} 

マニフェスト:

<uses-sdk android:minSdkVersion="8" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <uses-library android:name="com.google.android.maps"/> 
    <activity 
     android:label="@string/app_name" 
     android:name=".ShareActivity" > 
     <intent-filter > 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:label="@string/app_name" 
     android:name=".Map" > 
     <intent-filter > 
      <action android:name="com.share.MAP" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity>  
+0

を得たあなたが同様に 'logcat'情報を投稿することができますか? –

+0

申し訳ありませんが、ican'tインポート私のlogcatここでは、私は何かを助けることができます私は物事を試みた! – Weloo

+0

私はいくつかの本を読んで、「強制終了」は、アプリケーションが十分に速く応答していないとき(私はその5秒と思う)に起こることを示しています。そのような場合は、多くの実行時間を要するコードを別のスレッドに移動してみてください。 –

答えて

0

私はキー私のマップが間違っていたと、これが原因となったことを考え出しましたマップは、私が

Control Panel\All Control Panel 
Items\System\Environment Variables 

だ私のパスにCドライブでのkeytoolのパスを追加し、グラムにcmdをして、このコマンドを使用するために必要な白のグリッドに

を表示されませんらキー

keytool -list -alias androiddebugkey -keystore "Path to your debug.keystore" -storepass android -keypass android 

、最終的に私は、正しいキー:)

0

はあなたのズームレベルを下げてみてくださいすることができます...おそらくレベル19をズーム...要求された場所では使用できません、あなたはのためのGoogleマップでレベル19までズームしてみてくださいでした場所は要求された???

が一致しない場合はより多くの情報を記入してください...あなたは、いくつかの詳細を与えることができ、ペーストのログをコピーすることができます...

+0

ok @Navin私はズームレベルを13に設定しましたが、何が起こっているのですか – Weloo

+0

場所のlatlngは何ですか?あなたはgooglemapsで試しましたか? –

+0

GPS位置マークの横にある地図に固定マークをつけるためにアンドロイドブックの濁点をマークする例があります – Weloo