如何添加带有自定义位图图标的2k标记android v2 maps

如何添加带有自定义位图图标的2k标记android v2 maps,android,maps,Android,Maps,我正在尝试为1800个项目创建一个带有自定义标记图标(位图和文本视图)的地图。我内存不足错误,因为我的应用程序在创建一些标记后关闭。 我怎么做? 以下是我的部分代码我的代码: 谢谢大家!再见 public void onMapReady(GoogleMap googleMap) { mMap = googleMap; lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE) mMap.setMa

我正在尝试为1800个项目创建一个带有自定义标记图标(位图和文本视图)的地图。我内存不足错误,因为我的应用程序在创建一些标记后关闭。 我怎么做? 以下是我的部分代码我的代码: 谢谢大家!再见

public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE)


    mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
    mMap.getUiSettings().setZoomControlsEnabled(true);
    mMap.getUiSettings().setCompassEnabled(true);
    mMap.getUiSettings().setMyLocationButtonEnabled(true);
    mMap.getUiSettings().setRotateGesturesEnabled(true);
    mMap.getUiSettings().setScrollGesturesEnabled(true);
    mMap.getUiSettings().setTiltGesturesEnabled(true);
    mMap.getUiSettings().setZoomGesturesEnabled(true);
    mMap.setMyLocationEnabled(true);

    start();
}

public void start() {
    new BackgroundTask().execute();

}


private class BackgroundTask extends AsyncTask<Void, Integer, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        progress.setProgress(0);
        progress.setMessage("Loading");
        progress.show();
        cursor.moveToFirst();


    }

    @Override
    protected String doInBackground(Void... arg0) {
        try {

            if (cursor.moveToFirst())

            {
                do {

                    nome = cursor.getString(cursor.getColumnIndex(LocalDbManage.KEY_NOME));
                    lati = cursor.getString(cursor.getColumnIndex(LocalDbManage.KEY_LATI));
                    longi = cursor.getString(cursor.getColumnIndex(LocalDbManage.KEY_LONGI));
                    prezzo = "€ "+cursor.getString(cursor.getColumnIndex(LocalDbManage.KEY_PREZZO));
                    id = cursor.getString(cursor.getColumnIndex(LocalDbManage.KEY_CONTACTID));
                    final double latitude = Double.parseDouble(lati);
                    final double longitude = Double.parseDouble(longi);


                    iconFactory.setRotation(90);
                    iconFactory.setStyle(IconGenerator.STYLE_ORANGE);
                    addIcon(iconFactory, prezzo, new LatLng(latitude, longitude));



                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            final MarkerOptions markerOptions = new MarkerOptions().
                                    icon(BitmapDescriptorFactory.fromBitmap(iconFactory.makeIcon())).
                                    position(new LatLng(latitude, longitude)).
                                    anchor(iconFactory.getAnchorU(), iconFactory.getAnchorV());
                            mMap.addMarker(markerOptions);

                    }
                    });

                } while (cursor.moveToNext());
            } else

            {
                System.out.println("ERROR");  // viene eseguito l'else
            }

            Thread.sleep(1200);
        } catch (InterruptedException e) {
        }

        return "Lavoro Terminato!";
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);

    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        progress.dismiss();
    }

}


private void addIcon(IconGenerator iconFactory,String text, LatLng position) {
    MarkerOptions markerOptions = new MarkerOptions().
            icon(BitmapDescriptorFactory.fromBitmap(iconFactory.makeIcon())).
            position(position).
            anchor(iconFactory.getAnchorU(), iconFactory.getAnchorV())`


}
public void onMapReady(谷歌地图谷歌地图){
mMap=谷歌地图;
lm=(LocationManager)getSystemService(Context.LOCATION\u服务)
mMap.setMapType(GoogleMap.MAP\u TYPE\u NORMAL);
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.getUiSettings().setCompassEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
mMap.getUiSettings().setRotategestureEnabled(true);
mMap.getUiSettings().setScrollGesturesEnabled(true);
mMap.getUiSettings().setTiltGesturesEnabled(true);
mMap.getUiSettings().setZoomGeturesEnabled(true);
mMap.setMyLocationEnabled(真);
start();
}
公开作废开始(){
新建BackgroundTask().execute();
}
私有类BackgroundTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
进度。设置进度(0);
进度。设置消息(“加载”);
progress.show();
cursor.moveToFirst();
}
@凌驾
受保护的字符串doInBackground(无效…arg0){
试一试{
if(cursor.moveToFirst())
{
做{
nome=cursor.getString(cursor.getColumnIndex(LocalDbManage.KEY_nome));
lati=cursor.getString(cursor.getColumnIndex(LocalDbManage.KEY_lati));
longi=cursor.getString(cursor.getColumnIndex(LocalDbManage.KEY_longi));
prezzo=“€”+cursor.getString(cursor.getColumnIndex(LocalDbManage.KEY_prezzo));
id=cursor.getString(cursor.getColumnIndex(LocalDbManage.KEY_CONTACTID));
最终双纬度=double.parseDouble(纬度);
最终双经度=double.parseDouble(longi);
i工厂设置旋转(90);
iconFactory.setStyle(IconGenerator.STYLE_橙色);
addIcon(iconFactory、prezzo、new Latling(纬度、经度));
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
最终标记选项标记选项=新标记选项()。
图标(BitmapDescriptorFactory.fromBitmap(iconFactory.makeIcon()))。
位置(新车床(纬度、经度))。
锚(iconFactory.getAnchorU(),iconFactory.getAnchorV());
mMap.addMarker(markerOptions);
}
});
}while(cursor.moveToNext());
}否则
{
System.out.println(“错误”);//viene eseguito l'else
}
睡眠(1200);
}捕捉(中断异常e){
}
返回“拉沃罗终结者!”;
}
@凌驾
受保护的void onProgressUpdate(整型…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
进步。解散();
}
}
专用void addIcon(IconGenerator iconFactory、字符串文本、板条位置){
MarkerOptions MarkerOptions=新的MarkerOptions()。
图标(BitmapDescriptorFactory.fromBitmap(iconFactory.makeIcon()))。
位置(位置)。
锚定(iconFactory.getAnchorU(),iconFactory.getAnchorV())`
}
编辑:现在我发现“无法将位图复制到包裹blob”我不知道这是什么意思…请帮帮我!
Thank的

似乎与此错误报告有关:

您需要扩展答案并使用适当的代码更新帖子,而不是链接