Hi Chris,

I did some more looking and it turns out the solution is incredibly simple:

In your MyAnnotation class, do this:

                public override CLLocationCoordinate2D Coordinate {
                        get { return  _coord; }
                        set {
                                this.WillChangeValue ("coordinate");            
                                _coord = value;
                                this.DidChangeValue ("coordinate");
                        }
                }

This magically makes the MKMapView redraw your annotation without
having to remove/add the annotation.

Hope that helps!

Jeff

On Thu, Sep 15, 2011 at 1:06 PM, Jeff Stedfast <[email protected]> wrote:
> Turns out people are having the EXACT same issue you are having in
> Objective-C on StackOverflow:
>
> http://stackoverflow.com/questions/2256177/how-to-move-a-mkannotation-without-adding-removing-it-from-the-map
>
> You can use this very same trick in MonoTouch.
>
> Jeff
>
> On Thu, Sep 15, 2011 at 12:53 PM, Jeff Stedfast <[email protected]> wrote:
>> Hi Chris,
>>
>> Reading the developer documentation on Apple's site for MKAnnotation,
>> this is what it says for setCoordinate:
>>
>> setCoordinate:
>> Sets the new center point of the annotation.
>>
>> - (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate
>> Parameters
>> newCoordinate
>> The new center point for the annotation.
>> Discussion
>> Annotations that support dragging should implement this method to
>> update the position of the annotation.
>>
>> Availability
>> Available in iOS 4.0 and later.
>> Declared In
>> MKAnnotation.h
>>
>>
>> Calling setCoordinate() in Objective-C will not magically make your
>> annotation update its location on the screen. You'll have to use a
>> similar trick as to what I suggested to make it work in Objective-C as
>> well.
>>
>> To the best of my understanding, this method doesn't move the
>> MKAnnotation on the map like you seem to believe, it gets set by the
>> MKMapView when the user drags the annotation to another location.
>>
>> If I'm wrong, please provide me with some documentation explaining why
>> I'm wrong (preferably Apple documentation) or at least an Objective-C
>> program demonstrating it.
>>
>> Jeff
>>
>> On Thu, Sep 15, 2011 at 12:41 PM, Chris Hamblett <[email protected]> 
>> wrote:
>>> Since the bug has been changed to resolved without actually solving the 
>>> problem, I take this as a good reason that Objective-C will always have 
>>> functions that cannot be done through MonoTouch. I guess I will be making 
>>> the switch back to xCode.
>>>
>>> Sent from my iPhone
>>>
>>> On Sep 15, 2011, at 12:19 PM, "Jeff Stedfast" <[email protected]> wrote:
>>>
>>>> Hi Chris,
>>>>
>>>> I've taken a look at this and the problem is that once an
>>>> MKAnnotationView is created for your MKAnnotation subclass, you are
>>>> doing nothing to signal to the MKMapView that anything has changed.
>>>> Setting a new coordinate on your MKAnnotation subclass has no way of
>>>> notifying the parent MKMapView that it needs to redraw.
>>>>
>>>> Here's what I suggest you do:
>>>>
>>>> In your MKAnnotation subclass (MyAnnotation), add an event that gets
>>>> emitted when you set/change the coordinate. Then, have your
>>>> ViewController that owns the MKMapView listen for those events on each
>>>> of your MyAnnotations. When the event is emitted, have your
>>>> ViewController remove the annotation and re-add it.
>>>>
>>>> I tested this and it works.
>>>>
>>>> Jeff
>>>>
>>>> On Thu, Sep 15, 2011 at 9:26 AM, Chris Hamblett <[email protected]> 
>>>> wrote:
>>>>> I've added self-contained sample code to Bug 724
>>>>> bug 724
>>>>> Any updates on a binding that sets off the MapView KVO flag? Is this fixed
>>>>> on a new development build?
>>>>> ~Chris
>>>>> _______________________________________________
>>>>> MonoTouch mailing list
>>>>> [email protected]
>>>>> http://lists.ximian.com/mailman/listinfo/monotouch
>>>>>
>>>>>
>>>
>>
>
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch

Reply via email to