【问题标题】:How to set a background image to google maps - android如何将背景图像设置为谷歌地图 - android
【发布时间】:2016-02-02 14:49:08
【问题描述】:

How to Set background image of a custom google map marker? 这个问题与上述问题链接中提到的标记无关

关于土地的背景

当我们为谷歌地图制作者设置背景图片时 无论如何设置背景图像以使用android突出显示一个特殊的大陆?

任何帮助或参考

【问题讨论】:

  • 你会尝试什么吗?
  • 您是否尝试过对该区域进行地理围栏,您可以在地图中为地理围栏区域绘制图像或设置背景。
  • Harshad - 这与标记无关。
  • 有没有办法给一个区域添加背景图片..例如,如果我们分开澳大利亚,有没有办法添加背景图片而不是添加多边形或颜色

标签: android google-maps


【解决方案1】:

实例化一个新的GroundOverlayOptions 对象。

将图像指定为BitmapDescriptor。 使用其中一种可用方法设置图像的位置:

position(LatLng location, float width, float height)
position(LatLng location, float width)
positionFromBounds(LatLngBounds bounds)

根据需要设置任何可选属性,例如透明度。

致电GoogleMap.addGroundOverlay() 将图像添加到地图中。

参考thisthis

【讨论】:

    【解决方案2】:

    您需要通过在地图上选择一些点来绘制一个多边形。

    示例代码:

    public class MainActivity extends FragmentActivity implements
        OnMapClickListener, 
        OnMapLongClickListener, 
        OnMarkerClickListener {
    
        private GoogleMap myMap;
        Location myLocation;
        boolean markerClicked;
        PolygonOptions polygonOptions;
        Polygon polygon;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            FragmentManager manager = getSupportFragmentManager();
            SupportMapFragment mapFragment = (SupportMapFragment) manager
                .findFragmentById(R.id.map);
            myMap = mapFragment.getMap();
            myMap.setMyLocationEnabled(true);
            myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            myMap.setOnMapClickListener(this);
            myMap.setOnMapLongClickListener(this);
            myMap.setOnMarkerClickListener(this);
            markerClicked = false;
        }
    
        @Override
        public void onMapLongClick(LatLng point) 
        {
            myMap.addMarker(new MarkerOptions()
                .position(point).title(point.toString()));
    
            markerClicked = false;
        }
    
        @Override
        public boolean onMarkerClick(Marker marker) 
        {
    
            if(markerClicked)
            {
                if(polygon != null)
                {
                    polygon.remove();
                    polygon = null;
                }
    
                polygonOptions.add(marker.getPosition());
                polygonOptions.strokeColor(Color.BLACK);
                polygonOptions.strokeWidth(5);
                polygonOptions.fillColor(0x884d4d4d);
    
                polygon = myMap.addPolygon(polygonOptions);
                marker.remove();
    
            }
            else    
            {
                if(polygon != null)
                {
                    polygon.remove();
                    polygon = null;
                }
    
                polygonOptions = new PolygonOptions().add(marker.getPosition());
                markerClicked = true;
                marker.remove();
            }
    
            return true;
        }
    
        @Override
        public void onMapClick(LatLng point) 
        {
            Toast.makeText(getApplicationContext(), 
                "Long Press to select locations", Toast.LENGTH_LONG).show();
        }
    }
    

    使用这个片段

    fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment" />
    

    另请阅读官方文档here

    【讨论】:

    • 有没有办法给一个区域添加背景图片..例如,如果我们分开澳大利亚,有没有办法添加背景图片而不是添加多边形或颜色
    • 好的,你想要使用的是 GroundOverlay 。检查我的新答案。
    【解决方案3】:

    将getInfoContents 中的代码替换为getInfoWindow。它们之间的区别在于 getInfoContents 将您的视图包装在具有默认背景的 ViewGroup 中。 try this one

    【讨论】:

    • 你能添加一个例子 nuke ;)
    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    相关资源
    最近更新 更多