2013-01-07 10 views
13

Mam lat & długie wartości z database.how do wyświetlania markerów na podstawie lat & długich wartości za pomocą android mapy google api v2. W oryginalnych mapach google android, wyświetlamy markery na podstawie na koncepcji itemoverlay. W wersji 2 nie wiem, jak wyświetlać znaczniki.kod, aby dodać markery do mapy za pomocą Androida google maps v2

dbAdapter.open(); 
     Cursor points = dbAdapter.clustercall(Btmlft_latitude, toprgt_latitude, 
       Btmlft_longitude, toprgt_longitude, gridsize1); 
     int c = points.getCount(); 
     Log.d("count of points", "" + c); 

     if (points != null) { 
      if (points.moveToFirst()) { 
       do { 

        int latitude = (int) (points.getFloat(points 
          .getColumnIndex("LATITUDE")) * 1E6); 
        int longitude = (int) (points.getFloat(points 
          .getColumnIndex("LONGITUDE")) * 1E6); 

        mapView.addMarker(new MarkerOptions().position(
          new LatLng(latitude, longitude)).icon(
          BitmapDescriptorFactory.defaultMarker())); 

       } while (points.moveToNext()); 

      } 
     } 
     points.close(); 
     dbAdapter.close(); 

To mycode.I Dostaję łac & długie wartości z bazy, ale jak dodać znaczniki na podstawie łac & długich wartościach na mapie.

czytam android google Maps API v2.In które dają tylko statycznie dane dodane markerów

Odpowiedz

26

Użyj Marker Klasa

ikona umieszczona w konkretnym punkcie na powierzchni na mapie . Ikona znacznika jest rysowana orientacyjnie względem ekranu urządzenia, a nie powierzchni mapy; tj. niekoniecznie zmieni orientację z powodu obracania, pochylania lub powiększania mapy.

Znacznik ma następujące właściwości:

Anchor

punkt na obraz, który będzie umieszczony w położeniu długość i szerokość geograficzną znacznika. Wartość domyślna to 50% od lewej strony obrazu i u dołu obrazu.

Stanowisko

Wartość dla poĹ,oĹĽenia geograficznego położenia znacznika na mapie. Możesz zmienić tę wartość w dowolnym momencie, jeśli chcesz przesunąć znacznik.

Tytuł

Ciąg tekstowy, który jest wyświetlany w oknie informacyjnym, gdy użytkownik kliknie znacznik. Możesz zmienić tę wartość w dowolnym momencie.

Snippet

dodatkowy tekst, który jest wyświetlany pod tytułem. Możesz zmienić tę wartość w dowolnym momencie.

Ikona

Bitmapa, który jest wyświetlany znacznik. Jeśli ikona pozostanie nie ustawiona, pojawi się ikona domyślna. Możesz określić alternatywną kolorystykę domyślnej ikony za pomocą defaultMarker (float). Nie możesz zmienić ikony po utworzeniu znacznika.

Drag Stan

Jeśli chcesz zezwolić użytkownikowi na przeciągnij znacznik, należy ustawić tę właściwość na wartość true. Możesz zmienić tę wartość w dowolnym momencie. Wartością domyślną jest true.

Widoczność

Domyślnie, znacznik jest widoczny.Aby marker stał się niewidoczny, ustaw tę właściwość na false. Możesz zmienić tę wartość w dowolnym momencie.

GoogleMap map = ... // get a map. 
    // Add a marker at San Francisco. 
    Marker marker = map.addMarker(new MarkerOptions() 
     .position(new LatLng(37.7750, 122.4183)) 
     .title("San Francisco") 
     .snippet("Population: 776733")); 
4

Zgaduję problemu jest to, że mnożą swoje wartości/długości geograficznej szerokości przez 1E6 zamiast dzieląc je przez 1E6. Jeśli przechowywane wartości pochodzą z GeoPoints, może to być problem. W przeciwnym razie sposób dodawania znaczników jest w porządku i powinien działać.

czyli lat/wartości LNG ty przechodzą do nowego (długość i szerokość geograficzną) powinien wyglądać 45,4, -95,5 NIE 45400000, -95500000

Sprawdź poniższy kod:

//mMap is a GoogleMap and point is a GeoPoint 
this.mMap.addMarker(getMarker(point, drawableId)) 

...

public MarkerOptions getMarker(GeoPoint point, int drawableId) 
{ 
    return new MarkerOptions() 
    .position(new LatLng(point.getLatitudeE6()/1000000.0, point.getLongitudeE6()/1000000.0)) 
    .icon(BitmapDescriptorFactory.fromResource(drawableId)); 
}