So we'll keep it around (even though we won't override the implementation
that we get for free in the WebView), and thus we'll need to update the
native implementation. Gotcha. I will update the JIRA issue as such then.

On 3/27/12 4:57 PM, "Joe Bowser" <[email protected]> wrote:

>We should axe it/move it to its own plugins repo.  Someone may want it,
>but
>I don't want to make promises for it.
>
>On Tue, Mar 27, 2012 at 4:55 PM, Filip Maj <[email protected]> wrote:
>
>> I am going to assume then that will be merged in and we'll be making the
>> necessary native tweaks across the platforms we want to support.
>>
>> ANDROID peeps: should we axe native geo code, or should we keep it
>>around
>> and thus update the implementation to follow this new approach?
>>
>> On 3/27/12 3:33 PM, "Shazron" <[email protected]> wrote:
>>
>> >Apple should be following W3C, although I don't know if they fixed
>> >this bug yet, it's still unresolved for me in Radar:
>> >http://openradar.appspot.com/radar?id=1160403 but based on what my
>> >test on 5.1, they've fixed it.
>> >
>> >Sure ping me on email/jabber let's set up a time.
>> >
>> >On Tue, Mar 27, 2012 at 3:07 PM, Filip Maj <[email protected]> wrote:
>> >> Assuming that the native WebView implementations across whatever
>> >>platforms
>> >> adhere to the W3C Geo spec, then these native changes would line up
>>our
>> >> implementation with what users are expecting in their browser.
>> >>
>> >> I can help with tweaking the implementation on iOS, but would love if
>> >>you
>> >> could once-over it, Shaz, and perhaps jump on a quick remote hack
>>sesh
>> >> with me for 15-20 mins to make sure we are looking good.
>> >>
>> >> On 3/27/12 2:46 PM, "Shazron" <[email protected]> wrote:
>> >>
>> >>>Thanks Fil - I'm all for fixing geolocation in iOS. There's several
>> >>>jira issues for it, and I've been attempting to fix it as best I can,
>> >>>but users are still reporting problems with it since it doesn't match
>> >>>the native implementation of UIWebView.
>> >>>
>> >>>On Mon, Mar 26, 2012 at 4:00 PM, Filip Maj <[email protected]> wrote:
>> >>>> Hey all,
>> >>>>
>> >>>> The past week or so I've been working on revamping the geolocation
>> >>>>tests according to what is laid out by the W3C API [1]. Been
>>tracking
>> >>>>progress and whatnot in a JIRA issue [2].
>> >>>>
>> >>>> Good news: I've got the tests implemented plus cordova-js passing
>>said
>> >>>>tests (compare view to see diff available @ [3]).
>> >>>>
>> >>>> Bad news: we've been doing it wrong in our native implementations
>>forÅ 
>> >>>>well, ever, it seems.
>> >>>>
>> >>>> Moving forward would like to hear suggestions from everyone.
>> >>>>
>> >>>> Breaking down what we didn't do in the past that the spec mandates:
>> >>>>
>> >>>>  *   Properly implementing a timeout. It is one of the available
>> >>>>options that you can pass into getCurrentPosition / watchPosition.
>> >>>>However, we've been using it to date as essentially a "frequency"
>> >>>>parameter for watchPosition, I.e. "give me position updates every
>> >>>><options.timeout> milliseconds". This is wrong. According to the
>>spec,
>> >>>>the timeout option defines how long after invoking a
>>watch/getCurrent
>> >>>>the error callback should wait before it fires with a TIMEOUT
>> >>>>PositionError object.
>> >>>>  *   There is no control over how often watchPosition should fire
>> >>>>success callbacks. Instead, the spec says: "In step 5.2.2 of the
>>watch
>> >>>>process, the successCallback is only invoked when a new position is
>> >>>>obtained and this position differs signifficantly from the
>>previously
>> >>>>reported position. The definition of what consitutes a significant
>> >>>>difference is left to the implementation."
>> >>>>  *   I've also added tests + control of comparing the "maximumAge"
>> >>>>parameter on the JS side, and keeping a reference to the last
>> >>>>successful
>> >>>>position retrieved from the native framework and comparing its
>> >>>>timestamp
>> >>>>together with maximumAge. This should implement proper caching of
>> >>>>positioning on the WebView side and hopefully save some native round
>> >>>>trips.
>> >>>>
>> >>>> All of this means the the API on the native side for geolocation
>>will
>> >>>>change (sorry iOS!). Basically we have three actions that the
>> >>>>Geolocation plugin should listen for:
>> >>>>
>> >>>>  *   getLocation, which takes as parameters enableHighAccuracy
>> >>>>(boolean) and maximumAge (int as milliseconds).
>> >>>>  *   addWatch, parameter: only the usual callbackID required.
>> >>>>  *   clearWatch, parameter: only the usual callbackID required.
>> >>>>
>> >>>> getLocation should require very little changing (other than not
>> >>>>needing
>> >>>>the timeout parameter anymore, since that is handled on the JS side
>>in
>> >>>>my patch).
>> >>>>
>> >>>> addWatch should keep a list of callback Ids, and, as soon as we
>>have
>> >>>>one watch started, the native framework should start watching the
>> >>>>position for a "significant position difference". Once that
>>happens, it
>> >>>>should fire the success callback(s) for all stored watch callback
>>Ids.
>> >>>>If there is an issue retrieving position, it should fire the error
>> >>>>callback(s) for all stored watch callback Ids.
>> >>>>
>> >>>> I commented out a bunch of iOS-specific code that already did a
>> >>>>"distance filter" type of approach to position acquisition, but was
>> >>>>only
>> >>>>available if you provided undocumented parameters in the options
>> >>>>object.
>> >>>>Not sure about how feasible a distance filter is in Android, or
>>Windows
>> >>>>Phone, or our other supported platforms.
>> >>>>
>> >>>> One final point of discussion worth bringing up about this issue.
>> >>>>BlackBerry and Android use the default implementation of geolocation
>> >>>>abilities in their respective WEbViews. Because of this I would
>>mandate
>> >>>>removal of any Geolocation java code from the Android + BlackBerry
>> >>>>implementations. Saves some bytes. Originally we had the Android
>>plugin
>> >>>>classes in there for support for devices before 2.0. Since we are
>>only
>> >>>>supporting 2.0 and above, this is no longer needed. Are there any
>> >>>>issues
>> >>>>with this?
>> >>>>
>> >>>> Appreciate you guys looking this over.
>> >>>>
>> >>>> Cheers,
>> >>>> Fil
>> >>>>
>> >>>> [1] http://dev.w3.org/geo/api/spec-source.html#api_description
>> >>>> [2] https://issues.apache.org/jira/browse/CB-359
>> >>>> [3]
>> >>>>
>> https://github.com/filmaj/incubator-cordova-js/compare/master...geotest
>> >>>>s
>> >>
>>
>>

Reply via email to