- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 View
import 'dart:async';
import 'package:get/get.dart';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import '../../Controllers/mapview_controller.dart';
class MapViewerPage extends StatelessWidget {
MapViewerPage({Key? key}) : super(key: key);
final MapViewController mapcontroller = MapViewController();
final Completer<GoogleMapController> _controller = Completer();
final CameraPosition _initialCameraPosition = const CameraPosition(
target: LatLng(28.527582, 77.0688971),
zoom: 16,
);
final BitmapDescriptor defaultIcon =
BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueRed);
final List<Marker> allMarkers = [];
@override
Widget build(BuildContext context) {
return GetBuilder<MapViewController>(
init: mapcontroller,
builder: (controller) {
return SizedBox(
width: double.infinity,
height: double.infinity,
child: Obx(() => GoogleMap(
myLocationButtonEnabled: true,
markers:Set<Marker>.of(allMarkers),
mapType: MapType.normal,
initialCameraPosition: _initialCameraPosition,
onMapCreated: (GoogleMapController gmcontroller) {
_controller.complete(gmcontroller);
gmcontroller.setMapStyle(controller.loadMapStyle());
},
)),
),
});
}
getMarkers() {
//get markers from controller
var realdata = mapcontroller.realtimeList;
realdata.asMap().forEach((key, value) {
var _marker = Marker(
consumeTapEvents: true,
markerId: MarkerId(key.toString()),
position: LatLng(
double.parse(value.latitude), double.parse(value.longitude)),
onTap: () {
//do something here
});
allMarkers.add(_marker);
});
}
}
我的 Controller 看起来像这样。
import 'package:flutter/services.dart';
import 'package:get/get.dart';
import '../../Models/model_realtime.dart';
import '../../Providers/common_api_provider.dart';
class MapViewController extends GetxController {
var isLoading = false.obs;
var realtimeList = <ModelRealtime>[].obs;
@override
void onInit() {
fetchRealtimeData();
super.onInit();
}
void fetchRealtimeData() async {
try {
isLoading(true);
var realtime = await CommonApiProvider.realTimeData();
if (realtime != null) {
realtimeList.value = realtime;
}
} catch (e) {
isLoading(false);
// ignore: avoid_print
print(e);
rethrow;
} finally {
isLoading(false);
}
}
loadMapStyle() async {
String style = await rootBundle.loadString("assets/map_style.json");
return style;
}
}
这些代码工作得很好,但似乎每次新数据到达时都会重新加载/刷新 Googlemap。如何在不重新加载/刷新 Googlemap 的情况下,仅在每次更新数据库中的新纬度和经度时更新标记的位置?
谢谢
最佳答案
您正在 View 内初始化 allMarkers 列表,这就是您需要手动刷新页面以便在 map 上显示标记的原因。
在MapViewController
内初始化allMarkers
List<Marker> allMarkers = <Marker>[].obs; // Inside Map View Controller
然后,在 Google map 小部件中替换标记属性
Obx(() => GoogleMap(
myLocationButtonEnabled: true,
markers:Set<Marker>.of(controller.allMarkers), // <====== Update
mapType: MapType.normal,
initialCameraPosition: _initialCameraPosition,
onMapCreated: (GoogleMapController gmcontroller) {
_controller.complete(gmcontroller);
gmcontroller.setMapStyle(controller.loadMapStyle());
},
))
并且在getMarkers函数中
getMarkers() {
// Add this line. Create map view controller object
final MapViewController _controller = Get.find(); // <======= Add
//get markers from controller
var realdata = mapcontroller.realtimeList;
realdata.asMap().forEach((key, value) {
var _marker = Marker(
consumeTapEvents: true,
markerId: MarkerId(key.toString()),
position: LatLng(
double.parse(value.latitude), double.parse(value.longitude)),
onTap: () {
//do something here
});
_controller.allMarkers.add(_marker); // <===== Update
_controller.update() // <=== Add, because you are using GetBuilder
});
}
}
关于Flutter:如何使用 Getx Obx 更新标记在谷歌地图中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70497191/
我有以下 View import 'dart:async'; import 'package:get/get.dart'; import 'package:flutter/material.dart'
我正在尝试使用 hl7apy 解析 hl7 文件,我有以下 hl7 示例 示例: MSH|^~\&|XXXX|C|PRIORITYHEALTH|PRIORITYHEALTH|2008051110353
我正在尝试解析版本为 2.3.1 的 HL7 消息文件。解析消息时,OBX 段为空。 如果我在 HL7 消息中没有 OBR 段,Terser 无法获取 OBX 段值(它返回空值),那么查看 HL7 消
请帮帮我。我做错了什么?我收到错误:[Get] 检测到 GetX 的不当使用。 这是代码: class MealRecipesItem extends StatefulWidget { const
大约 10 年前,我使用了 Mirth,发现我几乎忘记了所有内容,而且我的很多资源不再可用。我希望遍历 OBR 和 OBX 段以提取 OBR 4.2、7.1、16.2 以用作节标题和 OBX 3.2、
如何使用 HAPI Framework 解析 HL7 多段(ORC/OBR/OBX)。 我还面临与解析多个实验室订单相关的问题,还面临与特殊字符 (MSH|^~\|) 编码相关的问题。 MSH|
我正在使用 flutter 和 GetX ,所以我在我的代码中实现 Obx。 我有 3 个文件: questionnaire.dartquestionnnaire_controller.dartpop
我在解析消息时收到此错误。 pipeparser.Parser(message) ---> 在此行抛出异常。 错误:无法从字段 5 中获取重复 2 - 最大重复次数仅为 1 次。:段:obx (rep
我是一名优秀的程序员,十分优秀!