Ios 宽度、高度:-1,默认图像:“默认标记”) infoWindow.name.text=info[1] infoWindow.status.text=info[2] infoWindow.speed.text=info[3] infoWindow.LastUpdateOn.text=Double(信息[4])?.getDateStringFromTimeStamp() infoWindow.interval.text=info[5] 返回信息窗口 } }
我真的非常感谢任何关于这方面的帮助。谢谢我已通过将MessagingProcessor声明为全局并在视图控制器和类中使用它解决了此问题Ios 宽度、高度:-1,默认图像:“默认标记”) infoWindow.name.text=info[1] infoWindow.status.text=info[2] infoWindow.speed.text=info[3] infoWindow.LastUpdateOn.text=Double(信息[4])?.getDateStringFromTimeStamp() infoWindow.interval.text=info[5] 返回信息窗口 } },ios,google-maps,swift3,delegates,messaging,Ios,Google Maps,Swift3,Delegates,Messaging,我真的非常感谢任何关于这方面的帮助。谢谢我已通过将MessagingProcessor声明为全局并在视图控制器和类中使用它解决了此问题 let messsagingProcessor: MesssagingProcessor = MesssagingProcessor() 以前,我在视图控制器类和客户机类中声明和使用不同的对象 我希望它能帮助别人。无论如何,谢谢你有什么回应吗?? channel.subscribe { message in print(
let messsagingProcessor: MesssagingProcessor = MesssagingProcessor()
以前,我在视图控制器类和客户机类中声明和使用不同的对象
我希望它能帮助别人。无论如何,谢谢你有什么回应吗??
channel.subscribe { message in
print(message.name ?? Constant.NIL_DEFAULT_TEXT)
print(message.data ?? Constant.NIL_DEFAULT_TEXT)
self.messageProcessor.process(message: message)
}
return true
protocol MesssagingProcessorDelegate {
func messageReceived(msg: MessageMO)
}
class MesssagingProcessor {
//MAR: Properties
var delegate: MesssagingProcessorDelegate?
var info = ""
//MARK: Constructor
init() {
info = "I am set"
}
//MARK: Functions
func process(message: <MessageTypeHere>) {
let msg = MessageMO(dataString: message.data as! String, colString: Constant.EP.C_MSG)
if MessagingHelper.validMessage(msg: msg) {
if msg.type == Constant.TYPE_MSG_LOC {
if msg.location != nil {
delegate?.messageReceived(msg: msg)
}
else {
print("No location found in Location Message. Message: \(String(describing: message.data))")
}
}
}
}
}
import UIKit
import GoogleMaps
import UserNotifications
class FirstViewController: UIViewController, MesssagingProcessorDelegate {
//MARK: Properties
let messsagingProcessor: MesssagingProcessor = MesssagingProcessor()
var bounds = GMSCoordinateBounds()
var mapView: GMSMapView? = nil
//MARK: Events
override func viewDidLoad() {
super.viewDidLoad()
let button = UIButton.init(type: .custom)
button.setImage(UIImage.init(named: "logo"), for: UIControlState.normal)
button.addTarget(self, action:#selector(showTrackeeOptions), for: UIControlEvents.touchUpInside)
button.frame = CGRect.init(x: 0, y: 0, width: 30, height: 30) //CGRectMake(0, 0, 30, 30)
let barButton = UIBarButtonItem.init(customView: button)
self.navigationItem.leftBarButtonItem = barButton
let camera = GMSCameraPosition.camera(withLatitude: 53.34624,
longitude: -6.24134, zoom: 6)
mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
mapView!.isMyLocationEnabled = true
mapView!.settings.setAllGesturesEnabled(true)
mapView!.delegate = self
self.view = mapView!
//
let marker = GMSMarker()
marker.position = CLLocationCoordinate2DMake(-33.86, 151.20)
marker.title = "TEST"
marker.snippet = Generic.toImageURL(name: "_demo_bus.png", category: Constant.TYPE_IMG_MARKER, type: Constant.TYPE_USER) + "^TestTest Test <-> Demo Bus^Available^2.3 km/h^1493729075106^10^0^333"
marker.map = mapView!
messsagingProcessor.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//MARK: Events
//MARK: MesssagingProcessorDelegate
func messageReceived(msg: MessageMO) {
let mk = MarkerMO(msg: msg).add()
var marker: GMSMarker
if mk != nil {
let imgURL = Generic.toImageURL(name: mk!.iconMarker, category: Constant.TYPE_IMG_MARKER, type: Constant.TYPE_USER)
var sharedInfo = imgURL
sharedInfo += Constant.SEPARATOR_LIST_ITEM
sharedInfo += mk!.name! + Constant.SEPARATOR_LIST_ITEM
sharedInfo += mk!.status + Constant.SEPARATOR_LIST_ITEM
sharedInfo += mk!.speed + Constant.SEPARATOR_LIST_ITEM
sharedInfo += String(mk!.time) + Constant.SEPARATOR_LIST_ITEM
sharedInfo += String(mk!.interval)
if mk!.gMarker != nil {
marker = GMSMarker()
} else {
marker = mk!.gMarker!
}
CATransaction.begin()
CATransaction.setAnimationDuration(1.0)
marker.position = CLLocationCoordinate2D(latitude: (mk!.location!.latitude), longitude: (mk!.location!.longitude))
marker.icon = Generic.toImageByURL(url: imgURL, width: Constant.ICON_DEFAULT_MARKER_WIDTH, height: Constant.ICON_DEFAULT_MARKER_HEIGHT, defaultImage: "defaultmarker")
marker.title = mk!.name
marker.snippet = sharedInfo
marker.map = self.mapView
CATransaction.commit()
mk!.updateGMarker(marker: marker)
self.bounds = self.bounds.includingCoordinate(marker.position)
}
else {
//TODO: Error in marker generation
}
}
}
extension FirstViewController: GMSMapViewDelegate {
//For Info WindowIndow
func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
let infoWindow = Bundle.main.loadNibNamed("LocMarkerInfoWindow", owner: self.view, options: nil)!.first! as! LocMarkerInfoWindowController
print(marker.snippet!)
let info = marker.snippet!.components(separatedBy: Constant.SEPARATOR_LIST_ITEM)
infoWindow.iconMarker.image = Generic.toImageByURL(url: info[0], width: Constant.ICON_INFOWIN_MARKER_WIDTH, height: -1, defaultImage: "defaultmarker")
infoWindow.name.text = info[1]
infoWindow.status.text = info[2]
infoWindow.speed.text = info[3]
infoWindow.lastUpdatedOn.text = Double(info[4])?.getDateStringFromTimeStamp()
infoWindow.interval.text = info[5]
return infoWindow
}
}
let messsagingProcessor: MesssagingProcessor = MesssagingProcessor()