2016-07-21 2 views
0

Я пытаюсь установить пользовательские значки для маркеров на картах google, он отлично работает с моим телефоном, который запускает Android 4.1.2, но затем я тестировал свое приложение с помощью Galaxy Samsung tabS2, который работает 6.0.1, и кажется, что он не может найти значки. Ниже мой кодПользовательский значок Android для маркера возвращает null в Marshmallow

@Override 
public void onMapReady(GoogleMap googleMap) { 
    deviceMap = googleMap; 
    deviceMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
     @Override 
     public void onMapClick(LatLng point) { 
      if(customM != null) 
       customM.remove(); 
      customM = deviceMap.addMarker(new MarkerOptions().position(point).icon(bmD).title(getString(R.string.customPos))); 
     } 
    }); 
    if (deviceMap != null) { 
     try{ 
      Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.temp_bts_icon); 
      deviceM = deviceMap.addMarker(new MarkerOptions().position(devicePos).title(getString(R.string.devicePos)) 
        .icon(BitmapDescriptorFactory.fromBitmap(bm))); 
      bm = BitmapFactory.decodeResource(getResources(), R.drawable.phone); 
      telephoneM = deviceMap.addMarker(new MarkerOptions().position(telephonePos).title(getString(R.string.telephonePos)) 
        .icon(BitmapDescriptorFactory.fromBitmap(bm))); 
     }catch (Exception e){ 
      Toast.makeText(Globals.MainActivity, "Error retrieving icons", Toast.LENGTH_SHORT).show(); 
      deviceM = deviceMap.addMarker(new MarkerOptions().position(devicePos).title(getString(R.string.devicePos)) 
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))); 
      telephoneM = deviceMap.addMarker(new MarkerOptions().position(telephonePos).title(getString(R.string.telephonePos)) 
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE))); 
     } 

     updateDeviceMarker(); 
     deviceMap.getUiSettings().setMyLocationButtonEnabled(true); 
     deviceMap.getUiSettings().setZoomGesturesEnabled(true); 
     deviceMap.getUiSettings().setZoomControlsEnabled(true); 
     deviceMap.getUiSettings().setCompassEnabled(true); 
     deviceMap.getUiSettings().setAllGesturesEnabled(true); 
     deviceMap.moveCamera(CameraUpdateFactory.newLatLngZoom(deviceM.getPosition(), 1f)); 
    } 
} 

Я также попытался это сделать:

telephoneM = deviceMap.addMarker(new MarkerOptions().position(telephonePos).title(getString(R.string.telephonePos).icon(BitmapDescriptorFactory.fromResource(R.drawable.temp_bts_icon)); 

ответ

0

Я делюсь с вами мой код для маркеров, который работает отлично и на Android Зефир.

От ресы:

map.addMarker(new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory. 
       fromResource(R.drawable.xyz))); 

Из растрового изображения:

Bitmap markerBitmap = Bitmap.createBitmap(px, px, Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(markerBitmap); 
Drawable shape = ResourcesCompat.getDrawable(getResources(), R.drawable.xyz, null); 
shape.setBounds(0, 0, markerBitmap.getWidth(), markerBitmap.getHeight()); 
shape.draw(canvas); 
map.addMarker(new MarkerOptions().position(newLatLng(lastLocation.getLatitude(), 
      lastLocation.getLongitude())).icon(BitmapDescriptorFactory.fromBitmap(markerBitmap))); 
+0

Благодаря человеку! Второй работает! В любом случае, есть ли у вас какие-либо подсказки, почему установка значка непосредственно из ресурса не работает? Просто, чтобы понять –

+0

Я пробовал ваш код, вам не хватает двух закрывающих круглых скобок, один после названия и один в конце. Но после этого он должен работать и на Android Marshmallow. Возможно, некоторые интересные проблемы, я действительно не знаю. – gabodroid

Смежные вопросы