有没有办法为MarkerView定位?我需要将其固定在左上角或右上角角落。
答案 0 :(得分:1)
这是一种将标记固定在左上角或右上角的方法
创建自定义MarkerView后,您可以执行以下操作。
1)您可以为父视图/布局设置一个ID,并使用该ID来获取其宽度。
layoutWidth = customLayout.getWidth();
2)然后,您可以覆盖绘制并执行以下操作:
@Override
public void draw(Canvas canvas, float posX, float posY) {
if (posX > (canvas.getWidth() / 2.0))
//Check if the user is in the right half of the canvas
super.draw(canvas, leftXPos, leftYPos);
//Draw marker on the left top corner
else
//Otherwise draw the marker on the top right corner.
super.draw(canvas, canvas.getWidth() - layoutWidth, rightYPos);
}
您可以将leftXPos,leftYPos和rightYPos的值设置为最佳外观。
希望这会有所帮助!
答案 1 :(得分:1)
getXOffset(float xpos) 和 getYOffset(float ypos) 不再被 MarkerView 类覆盖。要修复标记位置,您必须通过以下方式覆盖 getOffsetForDrawingAtPoint(float posX, float posY) 方法:
private MPPointF mOffset;
@Override
public MPPointF getOffsetForDrawingAtPoint(float posX, float posY) {
if(mOffset == null) {
// center the marker horizontally and fixed Y position at the top
mOffset = new MPPointF(-(getWidth() / 2f), -posY);
}
return mOffset;
}
答案 2 :(得分:0)
您应该创建自定义MarkerView,就像在documentation。
中一样然后,像这样自定义getXOffset和getYOffset:
@Override
public int getXOffset(float xpos) {
// this will cause the marker-view to be at left of the screen
return -(int)xpos;
}
@Override
public int getYOffset(float ypos) {
// this will cause the marker-view to be at top screen
return -(int)ypos;