new location with locationIQ Model and service
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import 'dart:convert';
|
||||
//import 'dart:convert';
|
||||
import 'package:appwrite/models.dart';
|
||||
import 'package:appwrite/appwrite.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
//import 'package:http/http.dart' as http;
|
||||
import '../config/environment.dart';
|
||||
|
||||
class AppwriteService {
|
||||
@@ -168,46 +168,46 @@ class AppwriteService {
|
||||
}
|
||||
}
|
||||
|
||||
// Geocode coordinates using local proxy or Appwrite Function
|
||||
Future<String> geocodeLocation(double lat, double lon) async {
|
||||
// Wenn lokaler Proxy aktiviert ist, diesen verwenden
|
||||
if (Environment.useLocalProxy) {
|
||||
return _geocodeViaLocalProxy(lat, lon);
|
||||
}
|
||||
// // Geocode coordinates using local proxy or Appwrite Function
|
||||
// Future<String> geocodeLocation(double lat, double lon) async {
|
||||
// // Wenn lokaler Proxy aktiviert ist, diesen verwenden
|
||||
// if (Environment.useLocalProxy) {
|
||||
// return _geocodeViaLocalProxy(lat, lon);
|
||||
// }
|
||||
|
||||
// Fallback: Koordinaten zurückgeben
|
||||
return 'Lat: ${lat.toStringAsFixed(6)}, Lon: ${lon.toStringAsFixed(6)}';
|
||||
}
|
||||
// // Fallback: Koordinaten zurückgeben
|
||||
// return 'Lat: ${lat.toStringAsFixed(6)}, Lon: ${lon.toStringAsFixed(6)}';
|
||||
// }
|
||||
|
||||
// Geocoding über lokalen Reverse Proxy
|
||||
Future<String> _geocodeViaLocalProxy(double lat, double lon) async {
|
||||
try {
|
||||
final proxyUrl = '${Environment.localProxyUrl}/?lat=$lat&lon=$lon&apiKey=${Environment.ptvApiKey}';
|
||||
// // Geocoding über lokalen Reverse Proxy
|
||||
// Future<String> _geocodeViaLocalProxy(double lat, double lon) async {
|
||||
// try {
|
||||
// final proxyUrl = '${Environment.localProxyUrl}/?lat=$lat&lon=$lon&apiKey=${Environment.ptvApiKey}';
|
||||
|
||||
print('🔄 Verwende lokalen Proxy: ${Environment.localProxyUrl}');
|
||||
// print('🔄 Verwende lokalen Proxy: ${Environment.localProxyUrl}');
|
||||
|
||||
final response = await http.get(Uri.parse(proxyUrl));
|
||||
// final response = await http.get(Uri.parse(proxyUrl));
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
final data = jsonDecode(response.body);
|
||||
// if (response.statusCode == 200) {
|
||||
// final data = jsonDecode(response.body);
|
||||
|
||||
if (data['success'] == true) {
|
||||
final location = data['location'] as String;
|
||||
print('✅ Geocoding erfolgreich (Proxy): $location');
|
||||
return location;
|
||||
} else {
|
||||
print('❌ Geocoding fehlgeschlagen (Proxy): ${data['error']}');
|
||||
return data['fallbackLocation'] ??
|
||||
'Lat: ${lat.toStringAsFixed(6)}, Lon: ${lon.toStringAsFixed(6)}';
|
||||
}
|
||||
} else {
|
||||
print('⚠️ Proxy Response Status: ${response.statusCode}');
|
||||
return 'Lat: ${lat.toStringAsFixed(6)}, Lon: ${lon.toStringAsFixed(6)}';
|
||||
}
|
||||
} catch (e) {
|
||||
print('❌ Lokaler Proxy nicht erreichbar: $e');
|
||||
print('💡 Tipp: Starten Sie den Proxy mit: cd proxy-server && node server.js');
|
||||
return 'Lat: ${lat.toStringAsFixed(6)}, Lon: ${lon.toStringAsFixed(6)}';
|
||||
}
|
||||
}
|
||||
// if (data['success'] == true) {
|
||||
// final location = data['location'] as String;
|
||||
// print('✅ Geocoding erfolgreich (Proxy): $location');
|
||||
// return location;
|
||||
// } else {
|
||||
// print('❌ Geocoding fehlgeschlagen (Proxy): ${data['error']}');
|
||||
// return data['fallbackLocation'] ??
|
||||
// 'Lat: ${lat.toStringAsFixed(6)}, Lon: ${lon.toStringAsFixed(6)}';
|
||||
// }
|
||||
// } else {
|
||||
// print('⚠️ Proxy Response Status: ${response.statusCode}');
|
||||
// return 'Lat: ${lat.toStringAsFixed(6)}, Lon: ${lon.toStringAsFixed(6)}';
|
||||
// }
|
||||
// } catch (e) {
|
||||
// print('❌ Lokaler Proxy nicht erreichbar: $e');
|
||||
// print('💡 Tipp: Starten Sie den Proxy mit: cd proxy-server && node server.js');
|
||||
// return 'Lat: ${lat.toStringAsFixed(6)}, Lon: ${lon.toStringAsFixed(6)}';
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
73
lib/services/location_iq_service.dart
Normal file
73
lib/services/location_iq_service.dart
Normal file
@@ -0,0 +1,73 @@
|
||||
// ignore_for_file: public_member_api_docs, sort_constructors_first
|
||||
|
||||
import 'dart:convert';
|
||||
|
||||
import '../config/environment.dart';
|
||||
import '../models/locationiq_model.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
class LocationIQService {
|
||||
static final String baseUrl = Environment.locationIQBaseUrl;
|
||||
late LocationIQ locationIQ;
|
||||
|
||||
Future<void> fetchLocationIQ(double lat, double lon) async {
|
||||
// Hier würde die eigentliche API-Anfrage an LocationIQ erfolgen
|
||||
// Zum Beispiel mit http.get() und der URL aus Environment.locationIQUrl
|
||||
// Die Antwort würde dann in das LocationIQ-Modell umgewandelt werden
|
||||
// https://eu1.locationiq.com/v1/reverse?key=$locationIQKey&lat=47.93875449671056&lon=13.762706553431048&format=json
|
||||
// locationIQ = LocationIQ.fromJson(responseData);
|
||||
// Simulierte Antwort (für Testzwecke)
|
||||
locationIQ = LocationIQ(
|
||||
placeId: '12345',
|
||||
licence: 'Data © OpenStreetMap contributors',
|
||||
osmType: 'node',
|
||||
osmId: '67890',
|
||||
lat: lat.toString(),
|
||||
lon: lon.toString(),
|
||||
displayName: 'Test Location',
|
||||
address: Address(
|
||||
houseNumber: '123',
|
||||
road: 'Test Street',
|
||||
village: 'Test Village',
|
||||
county: 'Test County',
|
||||
state: 'Test State',
|
||||
postcode: '12345',
|
||||
country: 'Test Country',
|
||||
countryCode: 'TC',
|
||||
),
|
||||
boundingbox: [
|
||||
'47.93875449671056',
|
||||
'47.93875449671056',
|
||||
'13.762706553431048',
|
||||
'13.762706553431048',
|
||||
],
|
||||
);
|
||||
|
||||
// Http Request
|
||||
var httpClient = http.Client();
|
||||
var url = '$baseUrl&lat=$lat&lon=$lon&format=json';
|
||||
print('Fetching LocationIQ data from: $url');
|
||||
try {
|
||||
var response = await httpClient.get(Uri.parse(url));
|
||||
if (response.statusCode == 200) {
|
||||
print('LocationIQ API response: ${response.body}');
|
||||
locationIQ = LocationIQ.fromJson(
|
||||
Map<String, dynamic>.from(
|
||||
jsonDecode(response.body) as Map<String, dynamic>,
|
||||
),
|
||||
);
|
||||
print('LocationIQ data parsed successfully: ${locationIQ.displayName}');
|
||||
} else {
|
||||
print('Failed to fetch LocationIQ data. Status code: ${response.statusCode}');
|
||||
}
|
||||
} catch (e) {
|
||||
print('Error fetching LocationIQ data: $e');
|
||||
} finally {
|
||||
httpClient.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user