如何获得lat和long中心谷歌地图iOS

时间:2014-11-21 19:16:04

标签: ios objective-c google-maps

我正在使用故事板构建iOS应用程序。我在我的应用程序中集成了谷歌地图,并在点击时获取位置地址。

我想在地图中心的滚动地图引脚上实施一个引脚将移动并给出与Uber或Ola Cabs app相同的位置地址。

有人可以帮助我如何实现这一点,我找到了一个教程(http://www.raywenderlich.com/81103/introduction-google-maps-ios-sdk-swift),但它很快,但我必须在目标c中实现。

这是我的代码:

- (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate{

    // coordinate contains your coordinate :)

    NSLog(@"did tap at coordinate: (%f, %f)", coordinate.latitude, coordinate.longitude);

         NSString *address=[NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/geocode/json?latlng=%f,%f&key=AIzaSjhsdfg67tahdsg8981k8_5aJoZps",coordinate.latitude, coordinate.longitude];

    NSURL *url=[NSURL URLWithString:address];

    NSData* data = [NSData dataWithContentsOfURL:url];

    if ((unsigned long)data.length > 3) {

        // NSString *myString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

        NSString *file=@"/Data.json";

        [data writeToFile:file atomically:YES];

        NSArray *ys_avatars = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

        NSLog(@"array=%@",ys_avatars);

            NSLog(@"status====%@",[ys_avatars valueForKey:@"status"]);

             if([[ys_avatars valueForKey:@"status"]  isEqual: @"OK"]){

        NSArray *results=[ys_avatars valueForKey:@"results"];

            NSLog(@"formatted_address====%@",[results valueForKey:@"formatted_address"] );

            NSArray *address=[results valueForKey:@"formatted_address"];

            NSLog(@"add=%@",address[0]);

               _myAddress.text=address[0];

        }

  }

}

1 个答案:

答案 0 :(得分:2)

我无法发表评论,以便回答您的​​问题,您可以通过这种方式获得地图中心的长度:

    - (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position
{
       double latitude = mapView.camera.target.latitude;
       double longitude = mapView.camera.target.longitude;

       CLLocationCoordinate2D center = CLLocationCoordinate2DMake(latitude, longitude);


        marker.position = center;

 }