如何在Objective c中集成Google地图?
How to integrate Google Map in Objective c?
我是 iOS 的新手,必须显示 Google 在洛杉矶地区有两个经纬度不同的餐厅位置的地图。我需要确保如果用户点击地图,它将允许用户获得前往该特定餐厅的路线。因此,如果所有位置都在一张地图上,用户需要在地图上单击所需的 restaurant/pin 并获取方向 - 正确吗?
试试这个我以前找到过
In -(void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(GMSMarker *)marker// This method will get call after taping marker pin(GMSMapView map view delegate method).
{ get the latitude and longitude of that marker.
}
Take the latitude and longitude of current location
Now Draw route between two location
//Download LRouteController from this link https://github.com/lukagabric/LRouteController
//This will draw link between two co-ordinate
//In .h File declare LRouteController *_routeController;
if ([_coordinates count] > 1)
{
//Draw line between two co-ordinate
[_routeController getPolylineWithLocations:_coordinates travelMode:TravelModeDriving andCompletitionBlock:^(GMSPolyline *polyline, NSError *error) {
if (error)
{
NSLog(@"%@", error);
}
else if (!polyline)
{
NSLog(@"No route");
[_coordinates removeAllObjects];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"No route" message:@"No route available for this route." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
else
{
//Drow route
_markerStart.position = [[_coordinates objectAtIndex:0] coordinate];
_markerStart.map = googleMapview;
_markerFinish.position = [[_coordinates lastObject] coordinate];
_markerFinish.map = googleMapview;
_polyline = polyline;
_polyline.strokeWidth = 3;
_polyline.strokeColor = [UIColor blueColor];
_polyline.map = googleMapview;
}
}];
}
//If you are unable to get taped pin latitude and longitude the you can use custom GMSMarker
Ex: @interface MapMarker : GMSMarker //Create new file of GMSMarker
@property (nonatomic, strong) coOrdinateData *data;(CoOrdinateData is NSObject class declare lat and long value)
@end
While adding marker on map use
MapMarker *marker= [[MapMarker alloc]init];
[marker setPosition:CLLocationCoordinate2DMake(LocationAtual.coordinate.latitude,LocationAtual.coordinate.longitude)];
marker.data=data;//Take lat and long value in object class and pass object class in marker object
After typing on map marker you can get value like
-(void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(GMSMarker *)marker
{
NSString *strLat = ((MapMarker *)marker).data.lat ;
NSString *strLong = ((MapMarker *)marker).data.long ;
//Add both the current location and marker latitude and longitude in _coordinates and draw route.
}
我是 iOS 的新手,必须显示 Google 在洛杉矶地区有两个经纬度不同的餐厅位置的地图。我需要确保如果用户点击地图,它将允许用户获得前往该特定餐厅的路线。因此,如果所有位置都在一张地图上,用户需要在地图上单击所需的 restaurant/pin 并获取方向 - 正确吗?
试试这个我以前找到过
In -(void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(GMSMarker *)marker// This method will get call after taping marker pin(GMSMapView map view delegate method).
{ get the latitude and longitude of that marker.
}
Take the latitude and longitude of current location
Now Draw route between two location
//Download LRouteController from this link https://github.com/lukagabric/LRouteController
//This will draw link between two co-ordinate
//In .h File declare LRouteController *_routeController;
if ([_coordinates count] > 1)
{
//Draw line between two co-ordinate
[_routeController getPolylineWithLocations:_coordinates travelMode:TravelModeDriving andCompletitionBlock:^(GMSPolyline *polyline, NSError *error) {
if (error)
{
NSLog(@"%@", error);
}
else if (!polyline)
{
NSLog(@"No route");
[_coordinates removeAllObjects];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"No route" message:@"No route available for this route." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
else
{
//Drow route
_markerStart.position = [[_coordinates objectAtIndex:0] coordinate];
_markerStart.map = googleMapview;
_markerFinish.position = [[_coordinates lastObject] coordinate];
_markerFinish.map = googleMapview;
_polyline = polyline;
_polyline.strokeWidth = 3;
_polyline.strokeColor = [UIColor blueColor];
_polyline.map = googleMapview;
}
}];
}
//If you are unable to get taped pin latitude and longitude the you can use custom GMSMarker
Ex: @interface MapMarker : GMSMarker //Create new file of GMSMarker
@property (nonatomic, strong) coOrdinateData *data;(CoOrdinateData is NSObject class declare lat and long value)
@end
While adding marker on map use
MapMarker *marker= [[MapMarker alloc]init];
[marker setPosition:CLLocationCoordinate2DMake(LocationAtual.coordinate.latitude,LocationAtual.coordinate.longitude)];
marker.data=data;//Take lat and long value in object class and pass object class in marker object
After typing on map marker you can get value like
-(void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(GMSMarker *)marker
{
NSString *strLat = ((MapMarker *)marker).data.lat ;
NSString *strLong = ((MapMarker *)marker).data.long ;
//Add both the current location and marker latitude and longitude in _coordinates and draw route.
}