2016-01-08 16 views
6

Tôi đang cố hiển thị đường dẫn giữa hai vị trí nhưng không chính xác.SDK bản đồ của Google - Đường dẫn không chính xác

if(center.latitude != 0 && center.longitude != 0) 
      { 
      NSString *urlString = [NSString stringWithFormat: 
            @"%@?origin=%f,%f&destination=%f,%f&sensor=true&key=%@", 
            @"https://maps.googleapis.com/maps/api/directions/json", 
            center.latitude, 
            center.longitude, 
            center1.latitude, 
            center1.longitude, 
            KGoogleMapServerKey]; 

      NSError *error; 
       NSDictionary *json =[NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlString] options:NSDataReadingUncached error:&error] options:NSJSONReadingMutableContainers error:&error]; 
      if(json[@"routes"] != nil && [json[@"routes"] count] > 0) 
      { 
       GMSPath *path =[GMSPath pathFromEncodedPath:json[@"routes"][0][@"overview_polyline"][@"points"]]; 
       GMSPolyline *singleLine = [GMSPolyline polylineWithPath:path]; 
       singleLine.strokeWidth = 7; 
       singleLine.strokeColor = [UIColor colorWithRed:56.0/255.0 green:163.0/255.0 blue:249.0/255.0 alpha:1.0]; 
       singleLine.map = mapViewGoogle; 
      } 

Đây là con đường tôi nhận được:

enter image description here

Như bạn thấy, dòng màu xanh (đường dẫn) không đi vào đích.
Cách sửa lỗi này?

+0

Tôi nghĩ Google không biết cách tiếp cận điểm đến, vì không có tuyến đường hoặc ở khu vực riêng tư, giống như vậy. – wf9a5m75

Trả lời

5

Tuyến đường của bạn quá dài. Trong mỗi phản hồi từ số API chỉ đường của Google bị giới hạn. Trong ví dụ của bạn, bạn đã nhận được N điểm, đã vẽ đường đi với họ và phóng to bản đồXem thành khu vực, nơi chỉ có bốn điểm được đặt.
Để hiển thị luôn luôn tuyến đường chính xác, bạn nên sau mỗi bản đồ thu nhỏ lại tuyến tính toán (bao gồm cả các điểm giữa để giữ nguyên tuyến đường).
Ví dụ: đầy đủ tuyến đường trên màn hình của bạn có 50 điểm. Bạn đang phóng to bản đồ, vì vậy chỉ hiển thị 4 điểm (ảnh chụp màn hình của bạn). Bây giờ lấy # 1 khi bắt đầu, # 5 là kết thúc và # 2 # 3 # 4 làm điểm giữa và gửi yêu cầu mới để tìm tuyến đường cho các điểm này. Bạn sẽ nhận được 50 điểm mới và với họ, bạn có thể vẽ phần này của tuyến đường chính xác hơn. enter image description here

+0

Điều này có vẻ hợp lý. Cảm ơn – Nitish

1

Điểm của việc này là không có đường cho các điểm đến đó, như bạn có thể xem tại đây: Gmap of your Example

Tôi đoán rằng đặt cược tốt nhất của bạn là sử dụng phương pháp tương tự mà Gmaps đã sử dụng, tôi có nghĩa là sử dụng rải rác/dashed polyline từ điểm cuối cùng bạn nhận được hướng dẫn đến điểm thực tế.

Bạn có thể tìm hiểu ở đây vài ví dụ về hành nhằm thực hiện loại ngươi của polyline:

Creating a dashed using IOS SDK

+0

Nếu điều đó đúng thì tại sao bản đồ Google hiển thị đường dẫn chính xác trên [** web **] (https://www.google.co.in/maps/dir/Vju+AS,+Skreddermoen+35,+4513 + Mandal, + Na Uy/Storgata + 2, + 0155 + Oslo, + Na Uy/@ 59.9082978,10.7358573,13z/data =! 4m14! 4m13! 1m5! 1m1! 1s0x46378e55431b5435: 0x306f6da1490b5f7b! 2m2! 1d7.4111312! 2d58.0184825! 1m5! 1m1! 1s0x46416e627216c757: 0xd7785d6e9ecf2c43! 2m2! 1d10.7483587! 2d59.9127025! 3e0? Hl = vi)? – Nitish

Các vấn đề liên quan