рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рд╣рдорд╛рд░реЗ рдЬрд┐рдпреЛ-рд╡рд┐рдХреА рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдУрдПрд╕рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рди рдХрд┐ рдЬреАрдПрдо рдХрд╛ред Android рдХреЗ рд▓рд┐рдП рдореЛрдмрд╛рдЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдорд╛рдирдХ MapView рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди, рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдУрдПрд╕рдПрдо рдФрд░ рдЬреАрдПрдо рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдВ рд╕рд╛рдордиреЗ рдЖрдИрдВ, рдЬреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, 30 рдореАрдЯрд░ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, Google рдореИрдкреНрд╕ рд╕реЗ OSM рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд
рдСрд╕реНрдореЛрдбрд╛рдпрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдорд┐рд▓реАред рдореИрдВ рдХрдЯ рдХреЗ рддрд╣рдд рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХреИрд╕реЗ рдЬрд╛рдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
- рдХрдХреНрд╖рд╛ рдХреА рдХреЙрдо рдХреЛ рдмрджрд▓реЗрдВред Pdf.android.maps ред рд▓реЗрдЖрдЙрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ org.osmdroid.views.MapView рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ
- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, MarkerClusterer рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдХреНрд▓рд╕реНрдЯрд░ рд▓реЗрдмрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рднреА рдХрдХреНрд╖рд╛рдПрдВ com.google.android.mapsред * org.osmdroid рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рдереЗред *
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП com.google.android.maps.GeoPoint at org.osmdroid.util.GeoPoint ред
Osmdroid рдХреЛрдб рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк mapView.getProject ()! ToPixels (...) рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрднреА-рдХрднреА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд╕реНрдХреНрд░реАрди рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрд▓ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреНрд▓рд╕реНрдЯрд░рдорд╛рд╕реНрдЯрд░ рд╡рд░реНрдЧ рдХреА рд╣рд┐рдЯрдЯреЗрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдХреЛрдб рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдПрдХ рдЯрд╛рдЗрд▓ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ
public static GeoPoint geoPointFromScreenCoords(int x, int y, MapView vw){ if (x < 0 || y < 0 || x > vw.getWidth() || y > vw.getHeight()){ return null; // coord out of bounds } // Get the top left GeoPoint Projection projection = vw.getProjection(); GeoPoint geoPointTopLeft = (GeoPoint) projection.fromPixels(0, 0); Point topLeftPoint = new Point(); // Get the top left Point (includes osmdroid offsets) projection.toPixels(geoPointTopLeft, topLeftPoint); // get the GeoPoint of any point on screen GeoPoint rtnGeoPoint = (GeoPoint) projection.fromPixels(x, y); return rtnGeoPoint; } public static Point pointFromGeoPoint(GeoPoint gp, MapView vw){ Point rtnPoint = new Point(); Projection projection = vw.getProjection(); projection.toPixels(gp, rtnPoint); // Get the top left GeoPoint GeoPoint geoPointTopLeft = (GeoPoint) projection.fromPixels(0, 0); Point topLeftPoint = new Point(); // Get the top left Point (includes osmdroid offsets) projection.toPixels(geoPointTopLeft, topLeftPoint); rtnPoint.x-= topLeftPoint.x; // remove offsets rtnPoint.y-= topLeftPoint.y; if (rtnPoint.x > vw.getWidth() || rtnPoint.y > vw.getHeight() || rtnPoint.x < 0 || rtnPoint.y < 0){ return null; // gp must be off the screen } return rtnPoint; }
- рдПрдХ рд╕рдордп рдореЗрдВ, рдПрдХ рдЖрд╡рд░рдг рд╡рд░реНрдЧ рдорд╛рдирдХ MyLocationOverlay рдХреЗ рдЖрд╕рдкрд╛рд╕ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕реЗ рд╕рдВрдХреНрд░рдордг рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдУрд╕рдо рдХрд╛ рдЕрдкрдирд╛ рд╡рд░реНрдЧ рд╣реИред
- рдЬрд╝реВрдо рдиреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП mapView.setMultiTouchControls (рд╕рдЪ) рдкрд░ рдХреЙрд▓ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛;
- "Mapnik" рд╕рдмреНрд╕рдЯреНрд░реЗрдЯ рдХреЛ mapView.setTileSource (TileSourceFactory.mvNIK) рдкрд░ рдХреЙрд▓ рдХрд░рдХреЗ рд╕рдмреНрд╕рдЯреНрд░реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛;
рдлрд┐рд▓рд╣рд╛рд▓, рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдХреБрдЫ рдирдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕рд╛рдордиреЗ рдЖ рд╕рдХрддреА рд╣реИрдВред
рдпреБрдкреАрдбреА:
рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗрдЯрдХрд╛рд░реЗрдВрдЯ (..) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЬрд╝реВрдо рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдЧрд▓рдд рд╕реНрдерд╛рди рдкрд░ рд╣рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ)ред рдЕрдиреНрдпрдерд╛, рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред