Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:MapKit相对于地图而不是屏幕边界放置注释_Ios_Mkmapview_Mapkit_Core Location - Fatal编程技术网

iOS:MapKit相对于地图而不是屏幕边界放置注释

iOS:MapKit相对于地图而不是屏幕边界放置注释,ios,mkmapview,mapkit,core-location,Ios,Mkmapview,Mapkit,Core Location,我正在编写一个内置mapview的应用程序 我通过HTTP请求从服务器下载一些注释的坐标。 我应该解码JsonResponse并将注释添加到地图中 摘自我的JSON响应 ...{ "id": 1, "lat": 20.34226, "long": 19.988363 },.. 我在这个方法中添加我的注释,当上述JSON下载完成时调用这个方法。(我有一个自定义注释类。) 添加注释时,它们是相对于我的屏幕边界而不是整个mapview添加的 我知道方法调用[self.mapV

我正在编写一个内置mapview的应用程序

我通过HTTP请求从服务器下载一些注释的坐标。 我应该解码JsonResponse并将注释添加到地图中

摘自我的JSON响应

...{
    "id": 1,
    "lat": 20.34226,
    "long": 19.988363
},..
我在这个方法中添加我的注释,当上述JSON下载完成时调用这个方法。(我有一个自定义注释类。)

添加注释时,它们是相对于我的屏幕边界而不是整个mapview添加的

我知道方法调用
[self.mapView convertPoint:CGPointMake(a,b)到CoordinateFromView:self.mapView]
就是原因

我想执行现在注释中的代码,并跳过

 CLLocationCoordinate2D touchMapCoordinate
        = [self.mapView convertPoint:CGPointMake(b,a) toCoordinateFromView:self.mapView];
直接进入
MapViewAnnotation*myPin=[[MapViewAnnotation alloc]initWithCoordinate:location]

但是,当我执行此操作时,会出现以下错误:

An instance 0x858cc30 of class MapViewAnnotation was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info:
<NSKeyValueObservationInfo 0x1a000890> (
<NSKeyValueObservance 0x1a000850: Observer: 0xa117890, Key path: coordinate, Options: <New: NO, Old: NO, Prior: YES> Context: 0x0, Property: 0x1a0008d0>
)
MapViewAnnotation类的实例0x858cc30已解除分配,而键值观察员仍在该实例中注册。观测信息被泄露,甚至可能被错误地附加到其他物体上。在NSKVODeallocateBreak上设置断点,使其在调试器中停止。以下是当前的观察信息:
(
)

我想知道的是:如何相对于我的地图添加这些注释,长/纬度是从JSON获得的(而不是相对于我当前看到的视图)。

location
code应该可以工作。如果任何lat/long值无效,则可能发生该错误。取消注释
location
代码,并在调用initWithCoordinate之前放置此NSLog:
NSLog(@“lat=%f,long=%f”,location.latitude,location.longitude)并确保所有纬度在-90到90之间,经度在-180到180之间。另外,没有关系,但我会使用double和doubleValue来代替CGFloat和floatValue以获得更好的精度(而CLLocationDegrees本身是double)。哦,我肯定会使用double value来代替!可能发生错误是因为我在同一位置添加了两个注释(因为我有很多注释,浮点表示法截断了我的大部分坐标)?实际上,我做错了的是纬度值无效:)发布您的答案,我将接受它!
An instance 0x858cc30 of class MapViewAnnotation was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info:
<NSKeyValueObservationInfo 0x1a000890> (
<NSKeyValueObservance 0x1a000850: Observer: 0xa117890, Key path: coordinate, Options: <New: NO, Old: NO, Prior: YES> Context: 0x0, Property: 0x1a0008d0>
)