苹果手表中的多个位置
Posted
技术标签:
【中文标题】苹果手表中的多个位置【英文标题】:Multiple Locations in apple watch 【发布时间】:2017-06-01 09:33:44 【问题描述】:我必须显示用户位置周围的位置。位置信息将从服务器到达。我正在使用“for”循环来解析位置并使用注释引脚添加到地图中。截至目前,它仅显示最后到达的位置。 但要求是显示多个位置,用户位置为中心点。到目前为止,我只能显示一个图钉。请帮助如何实现这一点?
for (NSDictionary* dictionary in responseDict)
NSString *latitudeString=[NSString stringWithFormat:@"%@",[dictionary valueForKey:@"LATITUDE"]];
double latitude=[latitudeString doubleValue];
NSString *longitudeString=[NSString stringWithFormat:@"%@",[dictionary valueForKey:@"LONGITUDE"]];
double longitude=[longitudeString doubleValue];
NSLog(@"the LATITUDE AND LONGITUDE is %f, %f",latitude,longitude);
CLLocationCoordinate2D locationCoordinate;
locationCoordinate.latitude=latitude;
locationCoordinate.longitude=longitude;
[self.mapView addAnnotation:locationCoordinate withPinColor:WKInterfaceMapPinColorPurple];
MKCoordinateSpan coordinateSpan = MKCoordinateSpanMake(0.05, 0.05);
[self.mapView setRegion:(MKCoordinateRegionMake(locationCoordinate, coordinateSpan))];
`
【问题讨论】:
您似乎添加了多个注释,但有效地缩放了地图以仅显示最后一个注释 【参考方案1】:您在循环的每次迭代中放大单个位置,因此最终您最终会放大最后一个位置。遗憾的是,WKInterfaceMap
没有像 MKMapView
那样的 showAnnotations
方法,因此您需要自己编写一个函数来实现显示 MKCoordinateRegion
包括几个注释。
我已经有一段时间没有编写任何 Obj-C 了,但这是 Swift 中的函数,它在 Map 上显示两个注释并在 watchOS 上工作:
func showTwoMapCoordinates(first: CLLocationCoordinate2D, second: CLLocationCoordinate2D)->MKCoordinateRegion
let center = CLLocationCoordinate2D(latitude: (first.latitude+second.latitude)/2, longitude: (first.longitude+second.longitude)/2)
var latDelta:CLLocationDegrees
let delta = abs((first.latitude-second.latitude)*1.4)
if delta > 0
return delta
else
return 0.1
var lonDelta:CLLocationDegrees
let delta = abs((first.longitude-second.longitude)*1.4)
if delta > 0
return delta
else
return 0.1
let span = MKCoordinateSpan(latitudeDelta: latDelta, longitudeDelta: lonDelta)
return MKCoordinateRegion(center: center, span: span)
要将其扩展到 n 个点,其中 n>2,您需要做的就是遍历要显示的每一对点,以与上述函数相同的方式找到最大增量并设置中心和跨度使用上面调用的函数对产生最大增量的两个点进行调用。
【讨论】:
以上是关于苹果手表中的多个位置的主要内容,如果未能解决你的问题,请参考以下文章