Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get particular Marker id in Google Map iOS SDK

I am working on google map iOS sdk. Here I create multiple markers in separate location co-ordinates.

Now I need to add identifier such like TAG for all markers to perform action for particular marker.

If TAG or some other identifier option is not available in google map iOS sdk, please suggest me how to archive it.

Thanks in Advance.

like image 333
Balaji G Avatar asked Jun 15 '15 14:06

Balaji G


People also ask

How do I find the marker ID on Google Maps?

var marker = new google. maps. Marker(markerOptions); marker. metadata = {type: "point", id: 1};

Is Google Maps iOS SDK free?

The Maps SDK for iOS uses a pay-as-you-go pricing model.

How do I add a marker to Google Maps on Iphone?

Type the name of a location or address. This displays a list of matching search results from Google Maps below the search bar at the top. Alternatively, you can tap the blue plus (+) icon in the lower-right corner of the map. Then tap Add new point. Drag the marker on the map to where you want to add a marker.


2 Answers

What I do is that I simply inherit the GMSMarker and add whatever data I need to it like this, I guess this is the best and easiest option you have.

@interface ATGoogleMapsSelectiveMarker : GMSMarker

@property (nonatomic) int markerID;
@property (nonatomic) int order;
@property (strong, nonatomic) NSObject* referenceObject;
@property (nonatomic) BOOL selected;

@end

EDIT:

I thought it is clear but I'll continue on how to get the data... When you create your markers and add them to the map, you create ATGoogleMapsSelectiveMarker and add it to the map after you fill it with everything you need, then you register any class you want as a delegate which implements GMSMapViewDelegate and you implement this method

- (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker {
    // Here you are sure that your marker object is of type ATGoogleMapsSelectiveMarker but it won't harm to double check
   if ([marker isKindOfClass:[ATGoogleMapsSelectiveMarker class]]) {
       ATGoogleMapsSelectiveMarker* parsedMarker = (ATGoogleMapsSelectiveMarker*)marker;
       NSLog(@"%d", parsedMarker.markerId);
   }

    return YES;
}
like image 75
Boda Avatar answered Oct 26 '22 23:10

Boda


Swift solution :

You can add identifier or any thing to a marker by setting a value for a key for the marker:

marker.setValue("20", forKey: "id")

and you can get it later using :

marker.value(forKey: "id")

Or

My way to do it is by create an extension for the GMSMarker and using the userData property to make the GMSMarker fits my need, for me I want to add each marker with instance of Branch class (map with markers for branches of some company) and this is the way that I did:

extension GMSMarker {
    var branch: Branch {
        set(branch) {
            self.userData = branch
        }

        get {
           return self.userData as! Branch
       }
   }
}

so when I set the marker property I set it like this:

marker.branch = someBranch

Isn't that clearer and more readable than marker.userData = someBranch ??

like image 34
Musa almatri Avatar answered Oct 27 '22 01:10

Musa almatri