【发布时间】:2021-08-09 13:09:26
【问题描述】:
目前,我在 android 中创建了一个地图应用程序。用户将在文本字段中输入地址,然后地图将显示该位置。该应用程序总是强制关闭,我不知道问题所在,将不胜感激。
这是我的控制台结果:
E/AndroidRuntime(26283):致命异常:AsyncTask #2 E/AndroidRuntime(26283):进程:com.example.service_platform,PID:26283 E/AndroidRuntime(26283): java.lang.IllegalArgumentException: locationName == null E/AndroidRuntime(26283): 在 android.location.Geocoder.getFromLocationName(Geocoder.java:171) E/AndroidRuntime(26283):在 com.baseflow.geolocator.tasks.ForwardGeocodingTask$1.run(ForwardGeocodingTask.java:42) E/AndroidRuntime(26283):在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) E/AndroidRuntime(26283):在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) E/AndroidRuntime(26283):在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) E/AndroidRuntime(26283): 在 java.lang.Thread.run(Thread.java:764) I/Process (26283):发送信号。 PID:26283 SIG:9
这是我转换 searchAddress 的代码:
searchandNavigate(){
Geolocator().placemarkFromAddress(searchAddr).then((result) => {
mapController.animateCamera(CameraUpdate.newCameraPosition(
CameraPosition(target: LatLng(result[0].position.latitude,result[0].position.longitude), zoom: 15)
))
});
}
这里是完整的代码:
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:service_platform/common/helper/size_config.dart';
class ProfileMap extends StatefulWidget {
@override
_ProfileMapState createState() => _ProfileMapState();
}
class _ProfileMapState extends State<ProfileMap> {
LatLng point = LatLng(-6.200000, 106.816666);
Set<Marker> _marker={};
String searchAddr;
GoogleMapController mapController;
searchandNavigate(){
Geolocator().placemarkFromAddress(searchAddr).then((result) => {
mapController.animateCamera(CameraUpdate.newCameraPosition(
CameraPosition(target: LatLng(result[0].position.latitude,result[0].position.longitude), zoom: 15)
))
});
}
void onMapCreated(GoogleMapController controller){
mapController = controller;
}
void _onMapTap(p){
setState(() {
point = p;
_marker.clear();
_marker.add(Marker(
markerId: MarkerId('id_0'),
position: point,
draggable: true,
));
});
}
@override
Widget build(BuildContext context) {
SizeConfig().init(context);
var size = MediaQuery.of(context).size;
return Scaffold(
resizeToAvoidBottomInset: true,
appBar: AppBar(
backgroundColor: Colors.white,
title: Text('Place Pin Point', style: TextStyle(color: Color(0xff222222))),
centerTitle: true,
titleTextStyle: TextStyle(color: Color(0xff222222), fontWeight: FontWeight.w700, fontSize: 16),
iconTheme: IconThemeData(
color: Color(0xffee3124)
),
),
body: Stack(
alignment: Alignment.bottomCenter,
children: [
GoogleMap(
onMapCreated: onMapCreated,
initialCameraPosition: CameraPosition(
target: LatLng(22.22, 88.88),
zoom: 15
),
markers: _marker,
onTap: _onMapTap,
zoomControlsEnabled: false,
),
Padding(
padding: const EdgeInsets.all(16),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4)
),
child: Card(
child: TextFormField(
onChanged: (val){
setState(() {
searchAddr = val;
});
},
onEditingComplete: searchandNavigate,
),
),
),
)
]
),
);
}
}
提前致谢
【问题讨论】:
-
控制台有错误吗?
-
我已经编辑了我的问题,谢谢
-
所以错误是关于 result[0].position.latitude,result[0].position.longitude 它的 null ,你尝试打印它吗?
-
是的,它工作正常
标签: flutter google-maps