Apple手表中的多个位置

时间:2017-06-01 09:33:45

标签: ios objective-c apple-watch

我必须在用户位置周围显示位置。位置信息将从服务器到达。我正在使用'循环解析位置并添加到带有注释引脚的地图。截至目前,它仅显示最后到达的位置。
但要求是应该以用户位置为中心点显示多个位置。截至目前,我只能显示一个引脚。请帮忙解决这个问题?

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 个答案:

答案 0 :(得分:0)

在循环的每次迭代中缩放单个位置,因此最终您最终放大了最后一个位置。遗憾的是WKInterfaceMap没有像showAnnotations这样的MKMapView方法,所以你需要自己编写一个函数来实现显示包含多个注释的MKCoordinateRegion

我暂时没有写过任何Obj-C,但是这里的Swift函数在地图上显示了两个注释并且在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,您需要做的就是遍历要显示的每对点,找到与上述函数相同的最大增量,并设置中心和跨度使用上面的函数调用产生最大增量的两个点。