2016-04-04 14 views
1

İlk poli line oluşturulan ve ona bir yol ekledi. Bu polyline oluşturduktan sonra tekrar gps konumu ve çizim polyline dayalı bazı diğer noktaları eklemeniz gerekir. Kod irade ÜstüGps konum enlemleri ve dinamik olarak langitudes dayalı google haritalar polyline uzatmak için nasıl

_path = [GMSMutablePath path]; 
[_path addLatitude:12.9716 longitude:77.5946]; // bangalore 
[_path addLatitude:13.3710 longitude:76.6413]; // Fiji 
[_path addLatitude:15.3173 longitude:75.7139]; // Hawaii 
[_path addLatitude:15.3647 longitude:75.1240]; // Mountain View 

GMSMarker *marker1 = [[GMSMarker alloc] init]; 
marker1.position = CLLocationCoordinate2DMake(12.9716, 77.5946); 
marker1.title = @"Bangalore"; 
marker1.groundAnchor = CGPointMake(0.2, 0.9); 
marker1.appearAnimation = kGMSMarkerAnimationPop; 
marker1.icon = [UIImage imageNamed:@"Flag Filled -50.png"]; 
marker1.snippet = @"India"; 
marker1.map = _mapView; 

GMSMarker *marker2 = [[GMSMarker alloc] init]; 
marker2.position = CLLocationCoordinate2DMake(13.3710, 76.6413); 
marker2.title = @"Tumkur"; 
marker2.groundAnchor = CGPointMake(0.3, 0.9); 
marker2.snippet = @"India"; 
marker2.icon = [UIImage imageNamed:@"Flag Filled -50.png"]; 
marker2.map = _mapView; 

GMSMarker *marker3 = [[GMSMarker alloc] init]; 
marker3.position = CLLocationCoordinate2DMake(15.3173, 75.7139); 
marker3.title = @"Mysore"; 
marker3.groundAnchor = CGPointMake(0.3, 0.9); 
marker3.snippet = @"India"; 
marker3.icon = [UIImage imageNamed:@"Flag Filled -50.png"]; 
marker3.map = _mapView; 

GMSMarker *marker4 = [[GMSMarker alloc] init]; 
marker4.position = CLLocationCoordinate2DMake(15.3647, 75.1240); 
marker4.title = @" Hubli"; 
marker4.groundAnchor = CGPointMake(0.3, 0.9); 
marker4.snippet = @"India"; 
marker4.icon = [UIImage imageNamed:@"Flag Filled -50.png"]; 
marker4.map = _mapView; 
marker4.rotation = 180; 

CLLocationCoordinate2D circleCenter1 = CLLocationCoordinate2DMake(15.3647, 75.1240); 
GMSCameraUpdate *updatedCamera = [GMSCameraUpdate setTarget:circleCenter1 zoom:10]; 
[_mapView animateWithCameraUpdate:updatedCamera]; 

_polyline = [GMSPolyline polylineWithPath:_path]; 
_polyline.strokeColor = [UIColor blueColor]; 
_polyline.strokeWidth = 1.f; 
_polyline.map = _mapView; 

cevap

0
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations 
{ 
    static CLLocation *lastKnownLocation = nil; 

    if(lastKnownLocation == nil) lastKnownLocation = [locations lastObject]; 
    else 
    { 
     CLLocation *currentLoc = [locations lastObject]; 

     // Forming GMSPath from User's last location to User's current location. 
     GMSMutablePath *path = [GMSMutablePath new]; 
     [path addCoordinate:[lastKnownLocation coordinate]]; 
     [path addCoordinate:[currentLoc coordinate]]; 

     GMSPolyline *polyLine = [GMSPolyline polylineWithPath:path]; 
     polyLine.strokeColor = [UIColor redColor]; 
     polyLine.strokeWidth = 2.f; 
     polyLine.map = googleMap; 

     // Saving current loc as last known loc,so that we can draw another GMSPolyline from last location to current location when you recieved another callback for this method. 
     lastKnownLocation = currentLoc; 
    } 
} 

(ikinci kez ileriye itibaren) uygulaması yeni konum güncellemesini var google harita üzerinde yol çizer. yardımcı olur

Umut,

biraz daha derin bilgi gerekiyorsa bana dön.

+0

Kodunuzda her zaman GMSMutablePath bellek sızıntısına neden olacak şekilde yeni örnek oluşturur .. Yardım için teşekkürler –

+0

Ancak GMSMutablePath nesnesi yalnızca yereldir ve başka bir blok bittiğinde ölür, gerekirse yol örneğini sıfırlayabilir kullandıktan sonra. –

+0

Bir şey daha var ve ARC'yi kullanmadıkça, GMSMutablePath ile ilgili kod herhangi bir bellek sızıntısına neden olmayacaktır, kodun ihtiyacınızı daha az yeniden yapılandırması, sadece gereksinim hakkında bir fikir vermek istiyorum. –

İlgili konular