Java 我有我分配给某些地方的图像,我知道代码返回了一些地方,但是它没有在地图上绘制它们。
我有所有的图像在可绘制的hdpi。我需要把它们放在其他可绘制文件中吗?如果这与覆盖层有关,有人能给我举个例子,说明如何使用覆盖层处理每条语句吗Java 我有我分配给某些地方的图像,我知道代码返回了一些地方,但是它没有在地图上绘制它们。,java,android,drawable,google-places-api,Java,Android,Drawable,Google Places Api,我有所有的图像在可绘制的hdpi。我需要把它们放在其他可绘制文件中吗?如果这与覆盖层有关,有人能给我举个例子,说明如何使用覆盖层处理每条语句吗 package com.CS3040.Places; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import an
package com.CS3040.Places;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import com.CS3040.Coursework.R;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.OverlayItem;
public class PlaceOverlayItem extends OverlayItem {
private final GeoPoint point;
private final Place place;
private final Drawable marker;
//private final Context context;
public PlaceOverlayItem(Context context, Place p, String type) {
super(p.getGeoPoint(), p.getName(), p.getFormatted_address());
if(type.equals("restaurant"))
{
//this.marker =
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.restaurant);
this.marker = new BitmapDrawable(context.getResources(), bmp);
//Drawable d = context.getResources().getDrawable(R.drawable.restaurant);
//d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
//this.marker = d;
// Resources resources = context.getResources();
// Bitmap bmp = BitmapFactory.decodeResource(resources, R.drawable.restaurant);
// this.marker = new BitmapDrawable(resources, bmp);
}else if(type.equals("bar||club")){
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.bars);
this.marker = new BitmapDrawable(context.getResources(), bmp);
}else if(type.equals("amusement_park||aquarium||park||zoo")){
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.attractions);
this.marker = new BitmapDrawable(context.getResources(), bmp);
}else if(type.equals("hotel||motel||bread_and_breakfast")){
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.hotels);
this.marker = new BitmapDrawable(context.getResources(), bmp);
}else if(type.equals("shopping")){
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.shopping);
this.marker = new BitmapDrawable(context.getResources(), bmp);
}else if(type.equals("food||meal_takeaway")){
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.fastfood);
this.marker = new BitmapDrawable(context.getResources(), bmp);
}else{
this.marker = null;
}
super.setMarker(this.marker);
this.point = p.getGeoPoint();
this.place = p;
}
/**
* @return the point
*/
public GeoPoint getPoint() {
return point;
}
/**
* @return the place
*/
public Place getPlace() {
return place;
}
}
我认为这可能是您测试OverlayItem类型的方式存在问题 只有当类型字符串为
“bar | club”
时,条件type.equals(“bar | club”)
才会为真。这意味着,如果类型为“bar”,则不会有任何标记
我建议创建一个静态地图:
private static Map<String, Integer> types = new HashMap<String, Integer>();
然后在覆盖的构造函数上,只需执行以下操作:
public PlaceOverlayItem(Context context, Place p, String type) {
super(p.getGeoPoint(), p.getName(), p.getFormatted_address());
int resId = types.get(type);
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), resId);
this.marker = new BitmapDrawable(context.getResources(), bmp);
super.setMarker(this.marker);
this.point = p.getGeoPoint();
this.place = p;
}
或者,您也可以在原始文件夹中创建一个json文件,并使用以下方法对其进行解析以获得映射:。通过这种方式,您可以更改图标,而无需转到代码并能够在其他类中重用它
如果您有勇气实现它,另一种选择是使用注释来创建地图
祝你好运
public PlaceOverlayItem(Context context, Place p, String type) {
super(p.getGeoPoint(), p.getName(), p.getFormatted_address());
int resId = types.get(type);
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), resId);
this.marker = new BitmapDrawable(context.getResources(), bmp);
super.setMarker(this.marker);
this.point = p.getGeoPoint();
this.place = p;
}