Android: отображение текущего местоположения пользователя и других пользователей рядом с текущим местоположением на карте Android - PullRequest
0 голосов
/ 23 января 2012

Я занимаюсь разработкой приложения для Android, мне нужно показать текущее местоположение пользователя, а другие используют «Рядом с текущим местоположением» на карте Google.Чтобы пользователи находились рядом с текущим местоположением, есть отдельная служба, мне нужно передать только текущее местоположение пользователя широта / долгота,

Мой вопрос - как я могу получить текущее местоположение пользователя и отобразить его на карте (как это делает iphone снемного анимации) Все остальные пользователи рядом с текущим местоположением (у каждого пользователя есть тип, в зависимости от типа, который мне нужен, чтобы отображать различные пометки / рисунки на карте)

Любая идея или любой пример учебного кода ссылки помогут мне

Сэм

1 Ответ

6 голосов
/ 23 января 2012

Сначала вам нужно просмотреть карту:

MapView mapView = (MapView) findViewById(R.id.mapView);

Отображение других пользователей:

List<GeoPoint> otherUsers = .... from your service
for(GeoPoint user: otherUsers )
{
     mapView .addOverlay(new MapOverlay(user);
}

Центрирование карты вокруг пользователя:

LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

Location l = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
//or if you want to use gps l = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
//you may want to use a different manner of getting the location since this may be out of date. see http://developer.android.com/reference/android/location/LocationListener.html for live data
point = new GeoPoint((int)(l.getLatitude()*1e6),(int)(l.getLongitude()*1e6));
mc.animateTo(point);
mapView.setBuiltInZoomControls(true);
mapView.invalidate();

Класс оверлеянеобходимо показать другим пользователям:

public class MapOverlay extends Overlay {

    private GeoPoint data;  

    public MapLineOverlay( GeoPoint item) {
        data = item;
    }

    /* (non-Javadoc)
    * @see com.google.android.maps.Overlay#draw(android.graphics.Canvas, com.google.android.maps.MapView, boolean, long)
    */
    @Override
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow,long when) {
        Projection projection = mapView.getProjection();
        if (shadow == false) {
            Paint paint = new Paint();
            paint.setAntiAlias(true);
            Point point = new Point();
            projection.toPixels(data, point);
            paint.setColor(color);
            paint.setStrokeWidth(4);
            canvas.drawPoint((float) point.x, (float) point.y, , paint);
            }
        return super.draw(canvas, mapView, shadow, when);
    }

    /* (non-Javadoc)
    * @see com.google.android.maps.Overlay#draw(android.graphics.Canvas, com.google.android.maps.MapView, boolean)
    */
    @Override
    public void draw(Canvas canvas, MapView mapView, boolean shadow) {

        super.draw(canvas, mapView, shadow);
    }       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...