2015-01-07 6 views
2

Я пытаюсь использовать пользовательский значок для маркера в приложении на основе местоположения и его изменение размера на разных устройствах.Расширение галочки Google Map на разных устройствах

У меня есть 4 различных размеров (рисую-MDPI, рисует-ИПЧР, рисую-xhdpi, рисует-xxhdpi) для этой иконы и изменяющегося в различных рисуемых папках.

Я использую простой код для использования этого значка.

Bitmap mIconBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.some_icon); 

marker = map.addMarker(new MarkerOptions() 
           .position(pinOfferLocation) 
           .title("Some Title") 
           .icon(BitmapDescriptorFactory 
             .fromBitmap(mIconBitmap)) 
           .snippet("Some Snippet").anchor(0.5f, 1)); 

Я также попытался с помощью:

BitmapDescriptorFactory.fromResources(SOME DRAWABLE RESOURCE) 

Другой вариант я попытался было создать уменьшенную битовую карту, как это:

Bitmap resized = Bitmap.createScaledBitmap(mIconBitmap, 70, 90, true); 

Но проблема с вышеуказанной линии только хорошо, когда ваше приложение работает в любом устройстве с высокой плотностью, и оно будет чрезвычайно масштабировано на устройствах с низкой плотностью.

Проблема, с которой я сталкиваюсь, что значки маркеров не изменяются в зависимости от разных устройств.

Есть ли лучший способ использовать значок в Google maps для разных размеров устройства?

Любая помощь очень ценится .. спасибо

ответ

3

Я думаю, что у меня была аналогичная проблема. Я использовал это обходное решение, даже это не очень красиво.

Я загрузил растровое изображение из активов-папки с помощью этого метода:

public static Bitmap getBitmapFromAsset(Context context, String strName, 
     int sampleFactor) { 
    AssetManager assetManager = context.getAssets(); 

    InputStream istr; 
    Bitmap bitmap = null; 
    try { 
     Options opt = new Options(); 
     opt.inSampleSize = sampleFactor; // IMPORTANT PART 
     istr = assetManager.open(strName); 
     bitmap = BitmapFactory.decodeStream(istr, null, opt); 
    } catch (IOException e) { 
     return null; 
    } 

    return bitmap; 
} 

Коэффициент образца может быть извлечен с помощью примерно так:

DisplayMetrics metrics = new DisplayMetrics(); 

    // not sure if this is just testing or necessary for metrics 
    getActivity().getWindowManager().getDefaultDisplay() 
      .getMetrics(metrics); 

    // factor (adjust in your app) 
    int sampleFactorDensity = Math.round(960/metrics.densityDpi); 

    currPosMarker = MyTools.getBitmapFromAsset(this.getActivity(), 
      "marker_azure.png", sampleFactorDensity); 
+0

спасибо за ответ. Я попытаюсь использовать этот код. – mike20132013

+0

Пробовал свой код .. хотел узнать, является ли currPosMarker битовой картиной, которую мы будем использовать в маркере или является маркером .. пытается реализовать ее, но не успевает до сих пор .. вы можете помочь мне с этим? – mike20132013

+0

nvm .. получил это .. пришлось создать папку с ресурсами и разместить изображения там lol .. работает, но маркеры действительно маленькие. – mike20132013

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