0

我现在做了很多标记我希望标记的每个信息窗口都必须是唯一的我已经为信息窗口编写了 xml,但是每次显示单个图像时它都不会相应地工作。

// Setting a custom info window adapter for the google map
myMap.setInfoWindowAdapter(new InfoWindowAdapter() {

    // Use default InfoWindow frame

    public View getInfoWindow(Marker arg0) {
        return null;
    }

    // Defines the contents of the InfoWindow

    public View getInfoContents(Marker marker) {

        // Getting view from the layout file info_window_layout
        View v = getLayoutInflater().inflate(
                R.layout.info_window_layout, null);

        // Getting the position from the marker
        LatLng latLng = marker.getPosition();
        Double latitude=latLng.latitude;
        Double langitude=latLng.longitude;

        String lat = String.format("%.6f", latitude);
        String lng = String.format("%.6f", langitude);

        Toast.makeText(getApplicationContext(), lat+"----"+lng,Toast.LENGTH_SHORT).show();
        // Getting reference to the TextView to set longitude
    TextView tvLng = (TextView) v.findViewById(R.id.tv1);
    ImageView icon = (ImageView) v.findViewById(R.id.icons);

    if(lat.equals("73.057130") && lng.equals("33.721140"))
    {
        icon.setImageResource(R.drawable.hbl_icon);

    }
    else
    {

        icon.setImageResource(R.drawable.alflah_icon);
    }
        // Returning the view containing InfoWindow contents
        return v;

    }

});

在 myMap.setInfoWindowAdapter 中,toast 显示相同的纬度,但出现的信息窗口未在 if 条件下显示图像,并且始终在 else 条件下显示图像。一切正常,但图像未显示适当的帮助。我的xml是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/icons"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp" />

    <TextView
        android:id="@+id/tv1"
        android:text="Get Directions"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp" />

</LinearLayout>
4

2 回答 2

1

你不应该因为这个错误LatLng而使用来识别。Marker

您可以改用标题/片段并在该值上创建 ifs 或拥有Map<Marker, YourModel>所有标记中的一个并将图标资源 ID 保留在该模型中。

或者您可以使用Android Maps Extensions,它添加了类似Marker.setData(Object)和的功能Object Marker.getData(),并使您的模型的图标资源 id 接近标记。

于 2013-05-11T12:33:31.877 回答
0
    for(int i = 0 ; i < arraylist.size();i++){
        addMarker(mapview,arraylistLat.get(i),arraylistLong.get(i),title.get(i),arraysnippet.get(i),imageid[i]);
    }

private void addMarker(GoogleMap map, double lat, double lon,
            String string, String string2,int imgid) {
        map.addMarker(new MarkerOptions().position(new LatLng(lat, lon))
                .title(string).snippet(string2).icon(BitmapDescriptorFactory.fromResource(imgid));
    }

这里 imgid 是可绘制资源的 id。

于 2013-05-04T06:56:52.537 回答