如何将位置(引脚)保存到解析服务器?
Posted
技术标签:
【中文标题】如何将位置(引脚)保存到解析服务器?【英文标题】:How can I save locations(pins) to a parse server? 【发布时间】:2016-03-29 10:14:46 【问题描述】:我有一个应用程序可以在表格视图中显示位置,可以通过地图上的按钮添加。我无法保存这些来解析(是的,我知道它正在退役,但我已经设置了一个工作完全相同的新服务器,所以认为它是解析的)还请注意我已经看过这个主题:https://***.com/questions/30435362/how-can-i-send-coordinates-to-parse-and-save-it-as-parse-pfgeopoint,即使它看起来很简单它仍然让我感到困惑所以这是我的表格视图中的代码
var places = [Dictionary<String,String>()]
var activePlace = -1
这是广告图钉的代码(在地图视图控制器中)
@IBAction func addSpot(sender: UIBarButtonItem)
var newCoordinate2 = self.map.userLocation.location!.coordinate;
var location = CLLocation(latitude: newCoordinate2.latitude, longitude: newCoordinate2.longitude)
//title = "new address"
//try change order start
let annotation = MKPointAnnotation()
self.map.addAnnotation(annotation)
annotation.coordinate = newCoordinate2
annotation.title = title
annotation.coordinate = self.map.userLocation.location!.coordinate;
CLGeocoder().reverseGeocodeLocation(location) (placemarks, error) -> Void in
var title = ""
if (error == nil)
if let p = placemarks?[0]
var subThouroughfare:String = ""
var thouroughfare:String = ""
if p.subThoroughfare != nil
subThouroughfare = p.subThoroughfare!
if p.thoroughfare != nil
thouroughfare = p.thoroughfare!
title = "\(subThouroughfare) \(thouroughfare)"
if title == ""
title = "Added \(NSDate())"
places.append(["name":title,"lat":"\(newCoordinate2.latitude)","lon":"\(newCoordinate2.longitude)"])
let annotation = MKPointAnnotation()
annotation.coordinate = newCoordinate2
annotation.title = title
self.map.addAnnotation(annotation)
self.map.addAnnotation(annotation);
func mapView(mapView: MKMapView!,
viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView!
if(annotation is MKUserLocation)
return nil;
// let pinView: Void = mapView.addAnnotation(annotation);
let pinAnnotationView = MKPinAnnotationView(annotation: annotation,reuseIdentifier:"MyIdentifier");
return pinAnnotationView;
感谢您的帮助,因为我是使用解析/外部服务器的新手
编辑:我试过这个:
PFObject["geoPoint"] = PFGeoPoint(location: location)
location[location] = activePlace
location.saveInBackgroundWithBlock (succes, error) -> Void in
print("place has been saved")
我在三行出现错误 1) 实例成员 'subscript' 不能用于类型 'PFObject' 2) 'CLLocation' 类型没有下标成员 3) CLLocation 类型的值没有成员 'saveInBackgroundWithBlock'
重新编辑:我已经尝试过这个并收到警告说“返回后的代码将永远不会被执行”它也在应用程序上运行但不保存
let geoPoint = PFObject(className: "location")
geoPoint["location"] = activePlace
geoPoint.saveInBackgroundWithBlock (succes, error) -> Void in
print("place has been saved")
【问题讨论】:
你没有解释你的代码做错了什么 它没有做错任何事情,但它没有上传到解析。我只是不知道如何添加我必须解析的位置@Wain 您是否定义了一个 PFObject 来保存您的位置/每个位置? 不,我没有,因为我不确定在 PFObject 中放入什么可以与我已有的代码一起使用并且与 parse 兼容,这就是我发布我的代码的原因 【参考方案1】:所以你需要一些东西来包含你的PFGeoPoint
,而那个东西必须是PFObject
。在解析后端,您可以为此对象创建表,并使用对 geoPoint 的引用和您想要的任何其他内容进行设置。现在您可以使用表的类名为每个新点实例化一个PFObject
,设置对geoPoint 的引用(使用pfObject["geoPoint"] = geoPoint
),保存它(使用pfObject.saveInBackgroundWithBlock...
)就完成了。
【讨论】:
我试过这样的事情(见编辑过的问题)它似乎不起作用,但我确定我没有完全按照你的意思做PFObject
实例和PFGeoPoint
实例不同。 PFObject
是存储PFGeoPoint
的所有者和容器。您试图使它们成为相同的东西,但那行不通
我再次编辑了这个问题,这次我收到一个警告说'返回后的代码永远不会被执行'并且不保存但我确定它更好?
您的代码看起来更好,但您必须在该代码上方的某处有一个 return
才能得到错误并使其不起作用以上是关于如何将位置(引脚)保存到解析服务器?的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据从客户端(android-java 应用程序)发送到解析服务器,对其进行处理,将其保存在 parse-dashboard 中并将结果发送回客户端?