如何添加带有自定义位图图标的2k标记android v2 maps
我正在尝试为1800个项目创建一个带有自定义标记图标(位图和文本视图)的地图。我内存不足错误,因为我的应用程序在创建一些标记后关闭。 我怎么做? 以下是我的部分代码我的代码: 谢谢大家!再见如何添加带有自定义位图图标的2k标记android v2 maps,android,maps,Android,Maps,我正在尝试为1800个项目创建一个带有自定义标记图标(位图和文本视图)的地图。我内存不足错误,因为我的应用程序在创建一些标记后关闭。 我怎么做? 以下是我的部分代码我的代码: 谢谢大家!再见 public void onMapReady(GoogleMap googleMap) { mMap = googleMap; lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE) mMap.setMa
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的似乎与此错误报告有关:您需要扩展答案并使用适当的代码更新帖子,而不是链接