Ответ 1
Предполагая, что вы ссылаетесь на android.location.Location
, используйте конструктор, который берет строку поставщика и устанавливает ее в нужное вам положение.
Я использую класс Geocoder для извлечения нескольких объектов местоположения, используя следующий код:
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 3);
Address[] addresses_array = new Address[addresses.size()];
addresses.toArray(addresses_array);
for( int i = 0; i < addresses_array.length; i++ ){
//create location object here
locOBJ.setLatitude(LATITUDE);
locOBJ.setLongitude(LONGITUDE);
}
Кроме того, внутри forloop я пытаюсь dymanically создавать объекты местоположения для добавления в массив;
Как создать пустые объекты местоположения?
Предполагая, что вы ссылаетесь на android.location.Location
, используйте конструктор, который берет строку поставщика и устанавливает ее в нужное вам положение.
Это не совсем то, на что он предназначен, если вы хотите нарисовать материал на карте Google, вы можете посмотреть GeoPoint класс. Вы должны использовать класс GeoPoint при работе с объектами Map OverlayItem. Что вы планируете делать с объектами Location? Также вы должны выполнить вызов getFromLocation в потоке или AsyncTask, поскольку он выполняет вызов удаленного сервера.
используя класс GeoPoint.
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 3);
int size = addresses.size();
GeoPoint gp[] = new GeoPoint[size];
for(int i = 0; i<size; i++) {
Address addr = addresses.get(i);
gp[i] = new GeoPoint(addr.getLatitude()*1000000,
address.getLongitude()*1000000);
}
Значения * 1000000, потому что GeoPoint хочет значения E6. Также поймите, что если совпадений нет, массив может быть длиной 0.