2010-03-30 3 views
0

Я отобразил карту в своем приложении, используя следующий код. Я получил информацию из базы данных и отобразил карту. Теперь я хочу, чтобы добавить маркер в извлеченном место ...Добавление маркера в полученное местоположение

googleMao.java

public class googleMap extends MapActivity{ 
    private MapView mapView; 
     private MapController mc; 
     GeoPoint p; 
     long s; 
     Cursor cur; 
     SQLiteDatabase db; 
     createSqliteHelper csh; 
     String query; 

    @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.map); 
      // String query = getIntent().getStringExtra("value"); 
      // here is calling the map string query 
      s = getIntent().getLongExtra("value",2); 
      map(); 
      mapView = (MapView) findViewById(R.id.mapview1);  
      LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom); 
      View zoomView = mapView.getZoomControls(); 

      zoomLayout.addView(zoomView, 
       new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, 
        LayoutParams.WRAP_CONTENT)); 
      //mapView.displayZoomControls(true); 
      mapView.setBuiltInZoomControls(true); 
      mc = mapView.getController(); 
      String coordinates[] = {"1.352566007", "103.78921587"}; 
      double lat = Double.parseDouble(coordinates[0]); 
      double lng = Double.parseDouble(coordinates[1]); 

      Geocoder geoCoder = new Geocoder(this, Locale.getDefault());  
      try { 
       List<Address> addresses = geoCoder.getFromLocationName(query, 5); 
       String add = ""; 
       if (addresses.size() > 0) { 
        p = new GeoPoint(
          (int) (addresses.get(0).getLatitude() * 1E6), 
          (int) (addresses.get(0).getLongitude() * 1E6)); 
        mc.animateTo(p);  
        mapView.invalidate(); 
        mc.setZoom(6); 
       }  
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 

     @Override 
     protected boolean isRouteDisplayed() { 
      // Required by MapActivity 
      return false; 
     } 
     public void map() 
     { 
      String[] str={"type"}; 
      int[] i={R.id.type}; 
      csh=new createSqliteHelper(this); 
      db=csh.getReadableDatabase(); 
      cur=db.rawQuery("select type from restaurants where _id="+s,null); 
      if(cur.moveToFirst()) 
      { 
       query = cur.getString(cur.getColumnIndex("type")); 
      } 
     } 

} 

ответ

0

Вам нужно создать ItemizedOverlay для этого. Here is one sample project из моих книг, которые показывают добавление ItemizedOverlay к MapView.

+0

Я видел вас пример, но проект не выполняется ... У меня есть следующие ошибки в logcat. 07-31 10: 23: 36.264: ОШИБКА/AndroidRuntime (839): обработчик нечистоты: выход из основного потока из-за неперехваченного исключения 07-31 10: 23: 36.293: ERROR/AndroidRuntime (839): java.lang.RuntimeException: Невозможно создать экземпляр активности ComponentInfo {com.MapMarker/com.MapMarker.MapMarker}: java.lang.ClassNotFoundException: com.MapMarker.MapMarker в загрузчике [email protected] –

+0

Эта ошибка кажется простой: вам не хватает com.MapMarker. MapMarker из вашего приложения. Выясните, почему это не входит в ваш файл APK, или если нет класса по этому имени, исправьте свой манифест. – CommonsWare

+0

Исправлена ​​ошибка. Я получил данные из базы данных по запросу. Можете ли вы помочь мне добавить маркер в программу, которую я перечислил выше ??? –

Смежные вопросы