Клуб API Карт

Добавление "балуна" в Yandex Map Kit

softvok
12 ноября 2012, 22:59

Здравствуйте. Пытаюсь используя сэмплы Yandex Map Kit сделать добавление балуна по нажатию кнопки. Необходимо чтоб балун появлялся именно на текущей позиции GPS, а затем уже передвигать его куда нужно. Код таков:

 
public class MainActivity extends Activity implements OnMyLocationListener{
   MyLocationItem myLocationItem;
   MapController mMapController;
   LinearLayout mView;
   OverlayManager mOverlayManager;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        final MapView mapView = (MapView) findViewById(R.id.map);
        mapView.showBuiltInScreenButtons(true);
        mMapController = mapView.getMapController();
        // add listener
        mMapController.getOverlayManager().getMyLocation().addMyLocationListener(this);
        mView = (LinearLayout)findViewById(R.id.view);
    }
   
   
   
    public void showObject(){
        // Load the required resources     
        Resources res = getResources();
        float density = getResources().getDisplayMetrics().density;
        int offsetX = (int)(-7 * density);
        int offsetY = (int)(20 * density);        
        // Create a layer of objects for the map
        DragAndDropOverlay overlay = new DragAndDropOverlay(mMapController);
        // Create an object for the layer
        DragAndDropItem drag1Item = new DragAndDropItem(new GeoPoint((int) (myLocationItem.getGeoPoint().getLat() * 1E6), (int) (myLocationItem.getGeoPoint().getLon() * 1E6)), res.getDrawable(R.drawable.drag1));      
        // Set offsets of the image to match the balloon tail with the specified GeoPoint      
        drag1Item.setOffsetX(offsetX);
        drag1Item.setOffsetY(offsetY);
        // Make the object draggable
        drag1Item.setDragable(true);
        // Create a balloon model for the object
        BalloonItem balloonDrar1 = new BalloonItem(this,drag1Item.getGeoPoint());
        balloonDrar1.setText(getString(R.string.drag));
        // Set the additional balloon offset
        balloonDrar1.setOffsetX(offsetX);
        // Add the balloon model to the object
        drag1Item.setBalloonItem(balloonDrar1);
        // Add the object to the layer
        overlay.addOverlayItem(drag1Item);
        // Add the layer to the map
        mOverlayManager.addOverlay(overlay);
    }
   
    public void onMyButtonClick(View view)  
    {              
        showObject();
        // выводим сообщение
        Toast.makeText(this, "Передвигайте точку", Toast.LENGTH_SHORT).show();  
    }  
}
 

Я так понимаю что неправильно преобразовываю координаты текущего положения, указывая где прорисовывать балун, из-за этого и выбывает приложение по нажатию кнопки.
6 комментариев
Подписаться на комментарии к посту

уберите, пожалуйста код под кат

Какая у вас платформа?

Платформа Android. Yandex Map Kit с гитхаба, среда разработки Eclipse. Использую API 16 (Android 4.1.2). Просто везде в мануалах пишут примеры использования классов с конкретными координатами, к примеру 

mMapController.setPositionAnimationTo(new GeoPoint(60.113337, 55.151317));    

 

 

 

 DragAndDropItem drag1Item = new DragAndDropItem(new GeoPoint((int) (myLocationItem.getGeoPoint().getLat() * 1E6), (int) (myLocationItem.getGeoPoint().getLon()* 1E6)), res.getDrawable(R.drawable.drag1));       


А за чем  вы делаете  myLocationItem.getGeoPoint().getLat() * 1E6 ?

Хочу получить координаты текущей широты

Никто не знает как правильно вызывается данное действие?:-(