Android 气泡弹出框

Android 气泡弹出框,android,google-maps,Android,Google Maps,谷歌地图,它允许我们定位任何我们想要的位置。插针指向后,在插针顶部将出现此“气泡”弹出框。我可以知道怎么做弹出窗口框吗?有代码显示吗?我现在正在使用警报对话框,但我希望它是“气泡”弹出窗口 List<Overlay> mapOverlays = mapView.getOverlays(); MapOverlay mapOverlay = new MapOverlay(); mapOverlays.add(mapOverlay); /

谷歌地图,它允许我们定位任何我们想要的位置。插针指向后,在插针顶部将出现此“气泡”弹出框。我可以知道怎么做弹出窗口框吗?有代码显示吗?我现在正在使用警报对话框,但我希望它是“气泡”弹出窗口

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;
        }
    }
}
List mapOverlays=mapView.getOverlays();
MapOverlay MapOverlay=新的MapOverlay();
添加(mapOverlays);
//获取gps位置
lm=(LocationManager)getSystemService(Context.LOCATION\u服务);
locationListener=新建MyLocationListener();
lm.RequestLocationUpdate(
//LocationManager.GPS\u提供程序,
LocationManager.NETWORK_提供程序,0,0,locationListener);
}
私有类MyLocationListener实现LocationListener{
@凌驾
位置更改后的公共无效(位置loc){
k=新的地质点((int)(位置getLatitude()*1E6),
(int)(loc.getLongitude()*1E6));
司马迁(k),;
mc.setZoom(18);
//添加位置标记
MapOverlay MapOverlay=新的MapOverlay();
List ListoForLays=mapView.getOverlays();
listofOverlays.clear();
添加(映射覆盖);
//方法强制重新绘制MapView
mapView.invalidate();
}
@凌驾
公共无效onProviderDisabled(字符串提供程序){
}
@凌驾
公共无效onProviderEnabled(字符串提供程序){
}
@凌驾
public void onStatusChanged(字符串提供程序、int状态、Bundle extra){
}
}
@凌驾
受保护的布尔值isRouteDisplayed(){
返回false;
}
类MapOverlay扩展了com.google.android.maps.Overlay{
@凌驾
公共布尔onTap(最终地质点p,MapView MapView){
//TODO自动生成的方法存根
k=p;
mc=mapView.getController();
司马迁(p),;
mapView.invalidate();
Geocoder Geocoder=新的地理编码器(getBaseContext(),
Locale.getDefault());
试一试{
列表地址=geoCoder.getFromLocation(
p、 getLatitudeE6()/1E6,p.getLongitudeE6()/1E6,1);
字符串add=“”;
如果(地址.size()>0){
for(int i=0;i
听起来像是在寻找新的API。顺便说一句,在新版本的API中,它们没有圆角(它们看起来更像盒子,而不像气泡)。您可以通过在加载maps API的javascript URL中请求以前版本的API来还原旧的API。

听起来像是在寻找新的API。顺便说一句,在较新版本的API中,它们没有圆角(看起来更像方框,而不像气泡)。您可以通过在加载maps API的javascript URL中请求API的早期版本来还原旧版本。

我目前正在开发一个映射应用程序,在该应用程序中,我还需要显示“气泡”弹出窗口,以下博客文章对我帮助很大

演示如何使用嵌入视图中的9补丁图像生成弹出窗口。代码还行,但仍有许多问题没有回答,一些评论者要求提供一些额外的源代码以供澄清

解释9面片图像是什么以及如何创建


使用这两篇文章,我能够将一些代码整合在一起,效果很好,因此希望您也能够根据自己的需要对其进行操作。

我目前正在开发一个映射应用程序,在该应用程序中,我还需要显示“气泡”弹出窗口,下面的博客文章对我帮助很大

演示如何使用嵌入视图中的9补丁图像生成弹出窗口。代码还行,但仍有许多问题没有回答,一些评论者要求提供一些额外的源代码以供澄清

解释9面片图像是什么以及如何创建


通过这两篇文章,我可以将一些代码整合在一起,这些代码运行良好,希望您也能够根据自己的需要对其进行操作。

谷歌没有提供API来实现这一点,请看。Victor的回答提供了一个链接,指向符合要求的开放源代码。

谷歌没有提供API来实现这一点,请看。Victor的回答提供了一个符合要求的开源代码链接。

我真的不明白你的意思。你有代码示例吗?我该如何输入代码?你看过我发给你的链接了吗?它有代码示例。你也可以在这里查看InfoWindow API参考:我真的不明白你的意思。你有代码吗ple?我该怎么把代码放进去?你读了我发给你的链接了吗?它有代码示例。你也可以在这里查看InfoWindow API参考:这只是一个更新-第一篇文章在我自己的博客上,我现在在那里添加了一个完整源代码的链接,以防对任何人有帮助