Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android中在地图中显示不同颜色的PIN?_Java_Android_Android Maps - Fatal编程技术网

Java 如何在Android中在地图中显示不同颜色的PIN?

Java 如何在Android中在地图中显示不同颜色的PIN?,java,android,android-maps,Java,Android,Android Maps,我在地图上以相同的颜色显示了多个管脚,但我需要为每个位置显示不同的颜色管脚,下面是代码 Drawable drawable; AddItemizesOverlay itemizedOvrealy; drawable = this.getResources().getDrawable(R.drawable.color1); itemizedOverlay = new AddItemizedOverlay(drawable, mapView); for(int i=0

我在地图上以相同的颜色显示了多个管脚,但我需要为每个位置显示不同的颜色管脚,下面是代码

Drawable drawable;
AddItemizesOverlay itemizedOvrealy;
drawable = this.getResources().getDrawable(R.drawable.color1);
        itemizedOverlay = new AddItemizedOverlay(drawable, mapView);
        for(int i=0;i<paramLat.size();i++)
        {
            lat = Double.parseDouble(paramLat.get(i)); 
            lon = Double.parseDouble(paramLong.get(i));
            geoPoint = new GeoPoint((int)(lat * 1E6), (int)(lon *1E6));
            geopoints.add(geoPoint);
            List<Overlay> mapOverlays = mapView.getOverlays();
            name = calloutName.get(i);
            overlayitem[i] = new Overlay
            Item(geoPoint, calloutName.get(i), "Time: " + calloutTime.get(i)); 
            itemizedOverlay.addOverlay(overlayitem[i]);
            mc.animateTo(geoPoint);
         }
            mapView.getOverlays().add(itemizedOverlay);

这里把pin图像作为可绘制名称传递给'color1',但我需要发送不同颜色的pin作为可绘制名称。结果,每个位置都用不同的管脚标记。

在for循环中创建AddItemizeOverlay对象,并为图钉传递不同的图像

GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());

drawable = this.getResources().getDrawable(R.drawable.marker);
itemizedOverlay = new MyItemizedOverlay(drawable);
OverlayItem overlayItem = new OverlayItem(point, "", "");
itemizedOverlay.addOverlay(overlayItem);
mapOverlays.add(itemizedOverlay);


GeoPoint point2 = new GeoPoint(lt2.intValue(),long2.intValue() );
// All "B"s
drawable = this.getResources().getDrawable(R.drawable.icon);
itemizedOverlay = new MyItemizedOverlay(drawable);
OverlayItem overlayItem1 = new OverlayItem(point2, "", "");
itemizedOverlay.addOverlay(overlayItem1);
mapOverlays.add(itemizedOverlay);

根据您的代码,
itemizedOverlay=newadditemizedoverlay(可绘制,地图视图)
在这里,您可以设置任何条件并更改每个
paramLat
的可绘制值。因此,将您的
itemizedOverlay
替换为for循环内部,并使用if条件设置不同的drawable。

您不需要添加多个
itemizedOverlay
来具有不同的标记,因为您可以为添加到单个
itemizedOverlay
的每个
OverlayItem
指定不同的标记

下面举一个如何做的例子

可以使用以下方法创建和定义每个标记(pin1、pin2)的边界:

然后,您可以使用以下其中一个引脚作为默认引脚创建
项目化Overlay

    itemizedOverlay = new AddItemizedOverlay(pin1, mapView);
要添加使用
pin1
的标记时:

    overlayitem = new OverlayItem(geoPoint, calloutName.get(i), "Time: " + calloutTime.get(i)); 
    itemizedOverlay.addOverlay(overlayitem);
要添加使用
pin2
的标记时:

    overlayitem = new OverlayItem(geoPoint, calloutName.get(i), "Time: " + calloutTime.get(i));
    overlayitem.setMarker(pin2);
    itemizedOverlay.addOverlay(overlayitem);
最后,将
ItemizedOverlay
添加到“地图视图”:

    mapView.getOverlays().add(itemizedOverlay);

关于

Hi,请在最后一个mapView.getOverlays().add(ItemizeOverlay)的for循环中尝试此代码;drawable=this.getResources().getDrawable(R.drawable.marker);我们可以将图像文件名存储为字符串,并将其用于获取可绘制的资源id吗?
    overlayitem = new OverlayItem(geoPoint, calloutName.get(i), "Time: " + calloutTime.get(i));
    overlayitem.setMarker(pin2);
    itemizedOverlay.addOverlay(overlayitem);
    mapView.getOverlays().add(itemizedOverlay);