0
在我MapView
,只要你想和點得到由一條線連接,但我不想作出任何行我給點擊地圖上創造儘可能多的點的能力是可與另一條線相交地圖這樣獲取從地圖上畫出一條直線上的座標
上有反正讓行的座標來檢查新線將與他人的一個相交?
或者,如果任何人有關於如何檢查這一點,將是巨大的任何建議太
這是繪製線條
@Override
public void draw(final Canvas canvas, final MapView mapView, final boolean shadow){
super.draw(canvas, mapView, shadow);
try{
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setDither(true);
paint.setColor(Color.RED);
paint.setStrokeWidth(3);
paint.setAlpha(100);
paint.setStyle(Style.STROKE);
Path path = new Path();
Point point1 = null;
boolean runOnce = false;
for(int i = 0;i<items.size();i++){
Point point = new Point();
mapView.getProjection().toPixels(items.get(i).mGeoPoint, point);
if(!runOnce)
{
path.moveTo(point.x, point.y);
point1 = new Point(point.x, point.y);
runOnce = true;
}
else
{
path.lineTo(point.x, point.y);
}
}
path.lineTo(point1.x, point1.y);
canvas.drawPath(path, paint);
path.lineTo(point1.x, point1.y);
canvas.drawPath(path, paint);
Paint paint2 = new Paint();
paint2.setAntiAlias(true);
paint2.setDither(true);
paint2.setColor(Color.RED);
paint2.setStrokeWidth(3);
paint2.setAlpha(20);
paint2.setStyle(Style.FILL);
Path path2 = new Path();
Point point2 = null;
boolean runOnce2 = false;
for(int i = 0; i < items.size(); i++)
{
Point point = new Point();
mapView.getProjection().toPixels(items.get(i).mGeoPoint, point);
if(!runOnce2)
{
path2.moveTo(point.x, point.y);
point2 = new Point(point.x, point.y);
runOnce2 = true;
}
else
{
path2.lineTo(point.x, point.y);
}
}
path2.lineTo(point2.x, point2.y);
canvas.drawPath(path2, paint2);
}catch(Exception e){
}
}
http://paulbourke.net/geometry/lineline2d/ – tiguchi 2012-07-09 15:39:54
不會工作,因爲它將考慮連接端點作爲相交 – tyczj 2012-07-09 20:17:45
你基本上是問如何計算兩個線段之間的交點。終點當然是線段的一部分。這可以通過數學輕鬆解決。如果您不希望您的終點計爲交叉點,那麼只需檢查您的終點是否重疊。這可以通過if語句解決,如下所示:if(Math.abs(x1 - x2)
tiguchi
2012-07-09 20:36:02