Не изобретайте велосипед, и не пытайтесь что-то парсить - это гиблое дело. Используйте
APIUPD:
В рамках разработки под Android я бы все же рекомендовал вам использовать официальное API. Не совсем понимаю, что вас в нем не устраивает. Обратите внимание на следующий код:
1. Инициализируем ApiClient:
GoogleApiClient googleApiClient = new GoogleApiClient.Builder(service).addApi(Places.GEO_DATA_API).build();
googleApiClient.connect();
2. Инициализируем фильтр по городам:
AutocompleteFilter filter = new AutocompleteFilter.Builder()
.setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES)
.build();
3. Получаем список (в моем случае - это AutocompletePrediction, вы можете пойти более удобным для вас путем):
PendingResult<AutocompletePredictionBuffer> result = Places.GeoDataApi
.getAutocompletePredictions(googleApiClient, externalQuery, null, filter);
AutocompletePredictionBuffer autocompletePredictions = result.await(60, TimeUnit.SECONDS);
ArrayList<AutocompletePrediction> predictions = DataBufferUtils.freezeAndClose(autocompletePredictions);
autocompletePredictions.release();
Ну и собственно получаем список фото:
PendingResult<PlaceBuffer> placeResult = Places.GeoDataApi.getPlaceById(googleApiClient, prediction.getPlaceId());
Places.GeoDataApi.getPlacePhotos(googleApiClient, prediction.getPlaceId());