Poi 흰색으로 표기되는 현상

안녕하세요. daum map api를 사용해서 지도 개발을 하고 있는데
특정 재현경로를 찾지는 못했으나 간헐적으로
poi 이미지가 노출이 안되고 poi 사이즈의 사각형 흰색으로만 표기되는 현상이 있는데

어떤 쪽이 문제일 경우 해당 현상이 나타나는지 궁금합니다.
수정 방안도 제안해주시면 감사하겠습니다.

안녕하세요.

구체적인 상황이 발생된 코드 정보를 함께 주시면 발현에 대해 검토해 볼 수 있을 것 같습니다.

개발환경도 같이 전달해 주세요. 어떤 브라우저에서 발생하는지…

1개의 좋아요

플랫폼은 안드로이드입니다. 질문에서도 말씀드렸듯, 100%재현은 아니며 간헐적으로 재현되고 있습니다.
Fragment를 사용했으며, 출발지/도착지 poi 노출과 출발지와 도착지를 이어주는 polyline 이 있고,
poi는 출발/도착외에 더 있는 경우도 있습니다.
아래 소스의 그 경로를 따라가는 사용자의 polyline을 갱신해주는 부분은 별도로 존재합니다.

추가로 문의사항 한가지 덧붙이자면, 지도를 사용후에 액티비티 종료 후 다음 액티비티에서도 지도를 사용하는 경우에, mapView.onSurfaceDestroyed(); 를 미리 해주고 액티비티 이동을 하고 있는데, 이동이 빠르게 일어나는 경우 두개의 지도는 사용할수 없다는 exception으로 앱이 종료되버리는현상이 있는데,
이 때 혹시 좋은 방안이 있는지요??
그리고 같은 루트에서 두번째 노출되는 액티비티에서 지도 화면이 회색으로만 노출되고 (poi나 polyline은 노출) 지도가 보이지 않는 현상이 있는데 이는 어떤 현상인지도 문의드립니다.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_map, container, false);
    ButterKnife.bind(this, view);

    mapView = new MapView(getActivity());
    ViewGroup rlMapLayout = (ViewGroup) view.findViewById(R.id.rlMapLayout);
    rlMapLayout.addView(mapView);

    mapView.setMapTilePersistentCacheEnabled(true);

    mapView.zoomOut(false);
    mapView.zoomIn(false);
    mapView.setCurrentLocationEventListener(this);
    mapView.setMapViewEventListener(this);
    mapView.setShowCurrentLocationMarker(false);
    mapView.setPOIItemEventListener(this);

    return view;
}

/**
* 경로의 시작 poi
*
* @param lat
* @param lon
* @param al
*/
public void onStartPOI(double lat, double lon, double al) {
if (null == mapView) {
return;
}

    MapPoint startPoi = MapPoint.mapPointWithGeoCoord(lat, lon);

    MapPOIItem startMarker = new MapPOIItem();
    startMarker.setItemName(getString(R.string.start));
    startMarker.setTag(Constants.START_POI_ID);
    startMarker.setMapPoint(startPoi);
    startMarker.setMarkerType(MapPOIItem.MarkerType.CustomImage);
    startMarker.setCustomImageResourceId(R.drawable.pointer_start);
    startMarker.setCustomImageAutoscale(false);
    startMarker.setShowDisclosureButtonOnCalloutBalloon(false);

    mapView.addPOIItem(startMarker);
}

/**
 * 경로의 도착 poi
 *
 * @param lat
 * @param lon
 * @param al
 */
public void onEndPOI(double lat, double lon, double al) {
    if (null == mapView) {
        return;
    }

    MapPoint endPOI = MapPoint.mapPointWithGeoCoord(lat, lon);

    MapPOIItem endMarker = new MapPOIItem();
    endMarker.setItemName(getString(R.string.end));
    endMarker.setTag(Constants.END_POI_ID);
    endMarker.setMapPoint(endPOI);
    endMarker.setMarkerType(MapPOIItem.MarkerType.CustomImage);
    endMarker.setCustomImageResourceId(R.drawable.pointer_arrive);
    endMarker.setCustomImageAutoscale(false);
    endMarker.setShowDisclosureButtonOnCalloutBalloon(false);

    mapView.addPOIItem(endMarker);
}

/**

  • 경로 polyline
    */
    public void onFollowTravelLoad(List trackPoints) {
    if (null == mapView) {
    return;
    }

      if (null != trackPoints && trackPoints.size() > 0) {
          MapPolyline polyline= new MapPolyline();
          polyline.setTag(1001);
          polyline.setLineColor(ContextCompat.getColor(getActivity(), R.color.red_orange));
    
          for (int i = 0; i < trackPoints.size(); i++) {
              TrackPoint trackPoint = trackPoints.get(i);
              if (null == trackPoint) {
                  continue;
              }
    
              if (i == 0) {
                  onStartPOI(trackPoint.getLatitude(), trackPoint.getLongitude(), trackPoint.getElevation());
              } else if (i == trackPoints.size() - 1) {
                  onEndPOI(trackPoint.getLatitude(), trackPoint.getLongitude(), trackPoint.getElevation());
              }
    
              polyline.addPoint(MapPoint.mapPointWithGeoCoord(trackPoint.getLatitude(), trackPoint.getLongitude()));
          }
    
          mapView.addPolyline(polyline);
    
          MapPointBounds mapPointBounds = new MapPointBounds(polyline.getMapPoints());
    

mapView.moveCamera(CameraUpdateFactory.newMapPointBounds(mapPointBounds, padding));
}
}

안드로이드 네이티브입니다.