рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдВрдмреЗрдбрд┐рдВрдЧ рдпреИрдВрдбреЗрдХреНрд╕ рдореИрдк рдХрд┐рдЯ рдПрдВрдбреНрд░реЙрдЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА
- рджрд┐рд╢рд╛ рд╕рдВрдХреЗрддрдХ рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдСрдирдХреНрд▓рд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкрде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдирд╛

1. рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдореНрдмреЗрдб рдХрд░рдирд╛ (рдЧреНрд░рд╣рдг, рд╡рд┐рдВрдбреЛрдЬ)
рд╣рдо
рдпрд╣рд╛рдВ рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ
рд╣реИрдВ рдФрд░
рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдЧреНрд░рд╣рдг рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдЖрд░реНрдХрд╛рдЗрд╡ рд╕реЗ \ yandexmapkit-Library \ res рдФрд░ \ yandexmapkit-Library \ libs рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд╛рдеред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, yandexmapkit-android.jar рдХрд╛ рд▓рд┐рдВрдХ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдмрд╛рд╕ рдлреЛрд▓реНрдбрд░ рд╕реЗ рдЬреЛрдбрд╝реЗрдВ (рдмрд┐рд▓реНрдб рдкрд╛рде-> рдХрдиреНрдлрд┐рдЧрд░ рдмрд┐рд▓реНрдб рдкрд╛рде-> рд▓рд╛рдЗрдмреНрд░реЗрд░реА-> рдПрдХреНрд╕рдЯрд░реНрдирд▓ JARs рдЬреЛрдбрд╝реЗрдВ)
рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рдХрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдорд╛рд░реНрдХрдЕрдк рдмрджрд▓реЗрдВ
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ru.yandex.yandexmapkit.MapView android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey=" " /> </RelativeLayout>
2. рджрд┐рд╢рд╛ рд╕рдВрдХреЗрддрдХ рдХреЗ рд╕рд╛рде рдкрде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдирдХреНрд╢реЗ рдкрд░ рдШрдЯрдирд╛рдУрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдирд╛
рдкрде рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдУрд╡рд░рд▓реЗрдпрд░реЗрдВрдбрд░ рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдИрдЖрд░рдПрдВрдбрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ
public class MyOverlayIRender extends OverlayIRender { Overlay mOverlay; public MyOverlayIRender(Overlay overlay) { super(); mOverlay = overlay; } @Override public void draw(Canvas canvas, OverlayItem arg1) { super.draw(canvas, arg1); List<OverlayItem> oi = mOverlay.getOverlayItems(); if (oi.size() < 2) return; Paint mPaint = new Paint(); mPaint.setDither(true); mPaint.setColor(Color.RED); mPaint.setStyle(Paint.Style.FILL_AND_STROKE); mPaint.setStrokeJoin(Paint.Join.ROUND); mPaint.setStrokeCap(Paint.Cap.ROUND); mPaint.setStrokeWidth(2); mPaint.setAntiAlias(true); for (int i = 0; i < oi.size() - 1; i++) { Path path = new Path(); ScreenPoint p1 = mOverlay.getMapController().getScreenPoint( oi.get(i).getGeoPoint()); ScreenPoint p2 = mOverlay.getMapController().getScreenPoint( oi.get(i + 1).getGeoPoint()); float angle = (float) (Math.atan2(p2.getY() - p1.getY(), p2.getX()- p1.getX()) * 180 / 3.14); path.moveTo(p2.getX(), p2.getY()); path.lineTo(p1.getX(), p1.getY()); canvas.drawPath(path, mPaint); canvas.save(); canvas.rotate(angle + 90, p2.getX(), p2.getY()); Path path2 = new Path(); path2.moveTo(p2.getX(), p2.getY()); path2.lineTo(p2.getX() + 5, p2.getY() + 8.66f); path2.lineTo(p2.getX() - 5, p2.getY() + 8.66f); path2.close(); canvas.drawPath(path2, mPaint); canvas.restore(); } } }
рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрде рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 1 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдкрде рдФрд░ рджрд┐рд╢рд╛ рдХреЗ рддреАрд░ рд▓реВрдк рдореЗрдВ рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдЕрдм рдЖрдкрдХреЛ рдУрд╡рд░рд▓реЗ рд╡рдВрд╢рдЬ MyPathOverLay рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MyOverlayIRender рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред
public class MyPathOverLay extends Overlay { MapView mMmapView; public MyPathOverLay(MapController arg0, MapView mapView) { super(arg0); mMmapView = mapView; this.setIRender(new MyOverlayIRender(this)); } @Override public int compareTo(Object arg0) { return 0; } @Override public boolean onLongPress(float x, float y) { OverlayItem m = new OverlayItem( this.c.getGeoPoint(new ScreenPoint(x, y)), BitmapFactory.decodeResource( this.c.getContext().getResources(), R.drawable.flag2leftred)); m.setOffsetY(-23); this.addOverlayItem(m); this.c.setPositionNoAnimationTo(this.c .getGeoPoint(new ScreenPoint(x, y))); return true; } }
рдУрд╡рд░рд▓реЙрдиреНрдЧ рдСрди рд▓реИрдВрдердкреНрд░реЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдкрде рдХреЗ рд▓рд┐рдП рдордзреНрдпрд╡рд░реНрддреА рдмрд┐рдВрджреБ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред
R.ableable.flag2leftred - рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░,
m.setOffsetY (-23); - рдпрджрд┐ рдЖрдк рдирдХреНрд╢реЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рддрд╕реНрд╡реАрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЪрд┐рддреНрд░ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЛ рджрдмрд╛рд╡ рдХреЗ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде рдЧрдардмрдВрдзрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдорд╛рдирдЪрд┐рддреНрд░ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдУрд╡рд░рд▓реЗ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ
public class BlogYandexActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MapView mMap = (MapView) findViewById(R.id.map); MapController mMapController = mMap.getMapController(); OverlayManager mOverlayManager = mMapController.getOverlayManager(); mOverlayManager.addOverlay(new MyPathOverLay(mMapController, mMap)); mMap.showBuiltInScreenButtons(true); mOverlayManager.getMyLocation().setEnabled(false); } }
рдкрд░рд┐рдгрд╛рдо
