从Web服务添加图像以映射标记图标

时间:2015-10-28 10:27:22

标签: android web-services google-maps google-maps-api-3 google-maps-markers

我在可绘制文件夹中有一个图标图像,我将其设置为地图标记图标,但我需要在现有标记click to See the white portion of the image(1st)上方将图像设置为我要显示图像的位置(2nd) this image to be shown on that previous white portion of that 1st image

  

*第一张图片是自定义标记,它是静态的,我从drawable文件夹中获取它。

     

*第二个是我从网络服务网站获取的简单图片。**

LatLng userPosition = new LatLng(
                    Double.parseDouble(item.latitude),
                    Double.parseDouble(item.longitude));
                googleMap.addMarker(new MarkerOptions()
                    .position(userPosition)
                    .title(item.vendorname)
                    .snippet("Service : " + item.category_name)
                    .icon(BitmapDescriptorFactory.fromResource(R.drawable.location_pin))

以上代码用于查看地图上的标记图标。但我需要在其上方显示另一个图像。所以我通过网络服务获取网址(如下所示)。

try {   
     URL url = new URL(CommonUtilities.Thumb_Call+ item.vendor_icon);
     bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
      bmp = BitmapFactory.decodeFile(String.valueOf(url));
     } 
     catch (Exception e) 
      {
         e.printStackTrace();
    }

请帮我将图片设置在来自网址的标记上方。

1 个答案:

答案 0 :(得分:0)

此问题可以通过以下方式解决:

首先创建custom_marker_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<ImageView
    android:id="@+id/imageView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/markertoemp"
    tools:ignore="VectorDrawableCompat" />

<ImageView
    android:id="@+id/inside"
    android:layout_width="32.25dp"
    android:layout_height="32.25dp"
    android:layout_centerInParent="true"
    android:layout_marginBottom="22dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="@+id/imageView4"
    app:layout_constraintEnd_toEndOf="@+id/imageView4"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/imageView4"
    app:srcCompat="@drawable/ic_delevery_primary"
    tools:ignore="MissingConstraints,VectorDrawableCompat" />

</android.support.constraint.ConstraintLayout>

现在转到Java并放置以下方法:

    private void setUpMap(final EmpMarker emp) {
    LatLng empLatLog = new LatLng(emp.getLatitude(), emp.getLongitude());

    View marker = ((LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.lyout.custom_marker_layout, null);
    ImageView imageView = marker.findViewById(R.id.inside);
    GlideApp.with(activity).load(URLs.Glide_URL + imgeSub).apply(RequestOptions.circleCropTransform()).into(imageView);

    new Handler().postDelayed(() -> {
        customMarker = mMap.addMarker(new MarkerOptions()
                .position(empLatLog)
                .icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(marker))));
        customMarker.setTag(emp);
    }, 10);
 }

祝你好运:)