Ошибка XMLHttpRequest при попытке запустить проект карты Google в ИнтернетеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ошибка XMLHttpRequest при попытке запустить проект карты Google в Интернете

Сообщение Anonymous »

Доступ к XMLHttpRequest по адресу «https://maps.googleapis.com/maps/api/pl ... 0000&key=A» из источника «http://localhost:64496» был заблокирован политикой CORS: в запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin».
Я получаю эту ошибку, когда пытаюсь получить доступ к близлежащим местам в веб-приложении, используя вызов API карты Google. Он работает нормально, когда я пытаюсь запустить проект на эмуляторе Andriod.
Я не знаю, что мне следует изменить, чтобы решить проблему.
Я попробовал создать прокси-сервер с помощью узла, а затем запустить его. все же я получил ту же ошибку. Когда я пытаюсь получить доступ к прямой ссылке в Chrome, я получаю файл Джейсона с близлежащими местами, но он не отображается в приложении

Код: Выделить всё

const express = require('express');
const request = require('request');
const cors = require('cors');

const app = express();
app.use(cors());

app.get('/api/places', (req, res) => {
const { lat, lng, radius } = req.query;
if (!lat || !lng || !radius) {
return res.status(400).json({ error: 'Latitude, longitude, and radius parameters are required' });
}
const apiKey = process.env.GOOGLE_API_KEY;
const url = `https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=${lat},${lng}&key=${apiKey}`;

request(url, (error, response, body) => {
if (!error && response.statusCode == 200) {
res.json(JSON.parse(body));
} else {
res.status(response.statusCode).json({ error: 'Failed to fetch data from Google API' });
}
});
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
Так я называю близлежащие места-

Код: Выделить всё

Future getNearbyPlaces(
double lat, double lng, double radius) async {
final url =
'https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=$lat,$lng&radius=$radius&key=$apiKey';
try {
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
final result = json.decode(response.body);
return result['results'];
} else {
print(
'Failed to load nearby places: ${response.statusCode} - ${response.body}');
throw Exception('Failed to load nearby places');
}
} catch (e) {
print('Error in getNearbyPlaces: $e');
rethrow;
}
}

Код: Выделить всё

Future _getCurrentLocation(
maps_flutter.GoogleMapController controller) async {
try {
Position position = await Geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.high); // Get current position
controller.animateCamera(maps_flutter.CameraUpdate.newCameraPosition(
maps_flutter.CameraPosition(
target: maps_flutter.LatLng(position.latitude, position.longitude),
zoom: 15,
),
));
_getNearbyPlaces(
position.latitude, position.longitude); // Get nearby places
} catch (e) {
print('Error getting current location: $e');
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error getting current location')),
);
}
}

Future _searchLocation(String query) async {
try {
final result = await _geocodingService
.getCoordinates(query); // Get coordinates for query
if (result != null) {
final maps_flutter.GoogleMapController controller =
await _controller.future;
controller.animateCamera(maps_flutter.CameraUpdate.newCameraPosition(
maps_flutter.CameraPosition(
target: maps_flutter.LatLng(result['lat'], result['lng']),
zoom: 14.4746,
),
));
_getAttractionsInCity(query); // Get attractions in city
setState(() {
_searchHistory.add(query);
_filteredSearchHistory.clear();
});
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Location not found')),
);
}
} catch (e) {
print('Error searching location: $e');
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error searching location')),
);
}
}

Future _getNearbyPlaces(double lat, double lng) async {
try {
final places = await _placesService.getNearbyPlaces(
lat, lng, _searchRadius); // Get nearby places
setState(() {
_places = places;
_markers = places
.map((place) =>  maps_flutter.Marker(
markerId: maps_flutter.MarkerId(place['place_id']),
position: maps_flutter.LatLng(
place['geometry']['location']['lat'],
place['geometry']['location']['lng']),
infoWindow: maps_flutter.InfoWindow(
title: place['name'],
snippet: place['vicinity'],
),
icon: BitmapDescriptor.defaultMarkerWithHue(
BitmapDescriptor.hueRed),
))
.toList();
});
} catch (e) {
print('Error getting nearby places: $e');
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error getting nearby places')),
);
}
}

Future _getAttractionsInCity(String city) async {
try {
final places = await _placesService
.getAttractionsInCity(city); // Get attractions in city
setState(() {
_places = places;
_markers = places
.map((place) => maps_flutter.Marker(
markerId: maps_flutter.MarkerId(place['place_id']),
position: maps_flutter.LatLng(
place['geometry']['location']['lat'],
place['geometry']['location']['lng']),
infoWindow: maps_flutter.InfoWindow(
title: place['name'],
snippet: place['formatted_address'],
),
icon: BitmapDescriptor.defaultMarkerWithHue(
BitmapDescriptor.hueRed),
))
.toList();
});
} catch (e) {
print('Error getting attractions in city: $e');
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error getting attractions in city')),
);
}
}
Это мой код для близлежащих мест, а также для случаев, когда я ищу какой-либо город в строке поиска. Мне не удалось получить привлекательность

Подробнее здесь: https://stackoverflow.com/questions/787 ... ect-on-web
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»