Android 在地图中设置标记,不带地图图像(自定义图像)
我正在开发一个雷达地图,所以它不是地图 我的想法是在不可见地图上设置标记,并设置以下图像,而不是传统地图: 因此,绿点是设置为LAT/LON的标记,但是你看不到地图,但是你可以看到图片Android 在地图中设置标记,不带地图图像(自定义图像),android,google-maps,google-maps-markers,Android,Google Maps,Google Maps Markers,我正在开发一个雷达地图,所以它不是地图 我的想法是在不可见地图上设置标记,并设置以下图像,而不是传统地图: 因此,绿点是设置为LAT/LON的标记,但是你看不到地图,但是你可以看到图片 提前谢谢。你可以使用谷歌地图 实现googlemapssdk 用您的图片制作一个自定义的“MyPositionMarker” 添加一些标记 文件: 编辑:只需与用户一起计算标记的偏移量,而不使用地图,是不是很容易 编辑2: mMap = getMap(); mMap.setMapType(Go
提前谢谢。你可以使用谷歌地图
mMap = getMap();
mMap.setMapType(GoogleMap.MAP_TYPE_NONE);
mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider));
其中mProvider是一个定制的tiles提供者。我在我的一个项目中做过类似的事情。我已经创建了自定义的ImageView,传递lat longs并在设置为该ImageView的位图上绘制 我的要求是在美国地图上画一条拉长的线 因此,您可以创建一个保存雷达图像的自定义ImageView。并将lat longs列表传递给该类,以在雷达图像上绘制点 这是我的自定义ImageView类
public class MapImageView extends ImageView{
private float latitudeTop, latitudeBottom, longitudeRight, longitudeLeft;
private List<Float> points = new ArrayList<Float>();
private Paint pointPaint;
private Matrix pointMatrix = new Matrix();
public MapImageView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
pointPaint = new Paint();
pointPaint.setAntiAlias(true);
pointPaint.setStrokeCap(Cap.ROUND);
pointPaint.setColor(Color.WHITE);
pointPaint.setStrokeWidth(2.5f);
}
public void setBounds(float latitudeTop, float latitudeBottom, float longitudeLeft, float longitudeRight) {
this.latitudeTop = latitudeTop;
this.latitudeBottom = latitudeBottom;
this.longitudeLeft = longitudeLeft;
this.longitudeRight = longitudeRight;
}
public void addPoint(float latitude, float longitude) {
points.add(longitude);
points.add(latitude);
invalidate();
}
public void setPoints(List<Float> points){
this.points = points;
LogMsg.d("PP GOT "+this.points.size());
invalidate();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
LogMsg.d("Image: -latitude: "+latitudeTop+" longitude: "+longitudeLeft);
LogMsg.d("width: "+getMeasuredWidth()/(longitudeRight-longitudeLeft)+" Height: "+getMeasuredHeight()/(latitudeBottom-latitudeTop));
pointMatrix.reset();
pointMatrix.postTranslate(-longitudeLeft, -latitudeTop);
pointMatrix.postScale(getMeasuredWidth()/(longitudeRight-longitudeLeft),getMeasuredHeight()/(latitudeBottom-latitudeTop));
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPoints(mapPoints(), pointPaint);
}
private float[] mapPoints() {
float[] pts = new float[points.size()];
for (int i = 0; i < points.size(); i++) {
pts[i] = points.get(i);
}
pointMatrix.mapPoints(pts);
return pts;
}
}
然后,您可以像这样向该图像视图添加点
for ( int i = 0 ; i < appStatsLocations.size(); i++) {
mMapAppStats.addPoint(Float.parseFloat(appStatsLocations.get(i).getLatitude()), Float.parseFloat(appStatsLocations.get(i).getLongitude()));
}
for(int i=0;i
这里是XML
<...MapImageView
android:id="@+id/mapAppStats"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btnAppStatsViewTeamNFriends"
android:scaleType="fitXY"
android:src="@drawable/usmapnew" />
你可以从中得到一些想法来解决你的问题。我想从地图开始,因此,immagine有一张地图,但它是不可见的。问题是:我不知道如何隐藏地图和设置图像。谢谢Kevinrob,这不是我想要的。通过这种方式,我隐藏了地图,但网格仍然存在,例如,我无法使用ImageView的所有属性设置“平铺”,但无论如何,谢谢:)是的,这是我所期望的。我一直在寻找计算所有坐标的方法,但我知道Android设备彼此之间有很大的不同,这太疯狂了。谢谢
<...MapImageView
android:id="@+id/mapAppStats"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btnAppStatsViewTeamNFriends"
android:scaleType="fitXY"
android:src="@drawable/usmapnew" />