Всплывающее окно - PullRequest
       2

Всплывающее окно

1 голос
/ 11 декабря 2011

Карта Google, она позволяет нам точно определять местоположение, которое мы хотим. После наведения булавки в верхней части булавки появится всплывающее окно «Пузырь». Могу ли я узнать, как сделать всплывающее окно? Какие-либо коды, чтобы показать? Сейчас я использую диалоговое окно оповещения, но вместо этого я хочу, чтобы оно было всплывающим окном «Пузырь».

List<Overlay> mapOverlays = mapView.getOverlays();
        MapOverlay mapOverlay = new MapOverlay();

        mapOverlays.add(mapOverlay);

        // obtain gps location
        lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        locationListener = new MyLocationListener();

        lm.requestLocationUpdates(
        // LocationManager.GPS_PROVIDER,
                LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
    }

    private class MyLocationListener implements LocationListener {

        @Override
        public void onLocationChanged(Location loc) {

            k = new GeoPoint((int) (loc.getLatitude() * 1E6),
                    (int) (loc.getLongitude() * 1E6));
            mc.animateTo(k);
            mc.setZoom(18);

            // Add a location marker
            MapOverlay mapOverlay = new MapOverlay();
            List<Overlay> listofOverlays = mapView.getOverlays();
            listofOverlays.clear();
            listofOverlays.add(mapOverlay);

            // invalidate() method forces the MapView to be redrawn
            mapView.invalidate();
        }

        @Override
        public void onProviderDisabled(String provider) {
        }

        @Override
        public void onProviderEnabled(String provider) {
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
    }

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

    class MapOverlay extends com.google.android.maps.Overlay {

        @Override
        public boolean onTap(final GeoPoint p, MapView mapView) {
            // TODO Auto-generated method stub

            k = p;
            mc = mapView.getController();
            mc.animateTo(p);

            mapView.invalidate();

            Geocoder geoCoder = new Geocoder(getBaseContext(),
                    Locale.getDefault());
            try {
                List<Address> addresses = geoCoder.getFromLocation(
                        p.getLatitudeE6() / 1E6, p.getLongitudeE6() / 1E6, 1);
                String add = "";
                if (addresses.size() > 0) {
                    for (int i = 0; i < addresses.get(0)
                            .getMaxAddressLineIndex(); i++)
                        add += addresses.get(0).getAddressLine(i) + "\n";
                    txtAddress.setText("Address: " + add);
                }
@Override
        public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
                long when) {
            super.draw(canvas, mapView, shadow);
            if (k != null) {
                // ---translate the GeoPoint to screen pixels---
                Point screenPts = new Point();
                mapView.getProjection().toPixels(k, screenPts);

                // ---add the marker---
                Bitmap bmp = BitmapFactory.decodeResource(getResources(),
                        R.drawable.passenger);
                canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 50, null);
            }
            return true;
        }
    }
}

Ответы [ 3 ]

1 голос
/ 14 декабря 2011

В настоящее время я работаю над картографическим приложением, где мне также нужно было отображать всплывающие окна «Пузырь», и следующие посты в блоге мне очень помогли.

В этом первом посте показано, какиспользовать изображение с 9 патчами, встроенное в представление, для создания всплывающего окна.С кодом все в порядке, но некоторые вопросы остаются без ответа, некоторые комментаторы просили пояснить дополнительный исходный код.

В этом посте из блога разработчиков Android объясняется, что такое 9-патч.как его создать.

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

0 голосов
/ 05 марта 2012

Google не предоставляет API для этого, взгляните на this . В ответе Виктора дается ссылка на открытый исходный код, отвечающий всем требованиям.

0 голосов
/ 11 декабря 2011

Звучит так, как будто вы ищете InfoWindow .Кстати, в более новых версиях API они не имеют закругленных углов (они больше похожи на прямоугольники и меньше похожи на пузыри).Вы можете восстановить старые, запросив предыдущую версию API в URL-адресе JavaScript, который загружает API карт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...