Location() method in org.openqa.selenium.html5 is not working

I have tried the following method from Location class

driver.location().getLatitude()

But I am getting the following error.

Jan 18, 2018 6:50:26 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
org.openqa.selenium.WebDriverException: Method has not yet been implemented (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: ‘3.7.1’, revision: ‘8a0099a’, time: ‘2017-11-06T21:01:39.354Z’
System info: host: ‘alkaffs-Air’, ip: ‘fe80:0:0:0:18aa:53d7:ba53:379f%en0’, os.name: ‘Mac OS X’, os.arch: ‘x86_64’, os.version: ‘10.13.2’, java.version: ‘1.8.0_131’
Driver info: io.appium.java_client.android.AndroidDriver
Capabilities {acceptSslCerts: true, app: /Users/alkaffkhan/v/VerveAd…, appActivity: com.vervewireless.droid.qa…, appPackage: com.vervewireless.droid.qa, appWaitActivity: com.vervewireless.droid.qa…, appWaitPackage: com.vervewireless.droid.qa, databaseEnabled: false, desired: {acceptSslCerts: true, app: /Users/alkaffkhan/v/VerveAd…, deviceName: Android, platformName: Android, proxy: {httpProxy: localhost:8888, proxyType: MANUAL, sslProxy: localhost:8888}, version: 5.0.1}, deviceManufacturer: samsung, deviceModel: GT-I9500, deviceName: 4d0080044ca841eb, deviceScreenSize: 1080x1920, deviceUDID: 4d0080044ca841eb, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, platform: LINUX, platformName: LINUX, platformVersion: 5.0.1, proxy: Proxy(manual, http=localhos…, takesScreenshot: true, version: 5.0.1, warnings: {}, webStorageEnabled: false}
Session ID: 517f75f5-d313-4129-be22-4c489390838e
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:89)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:600)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
at io.appium.java_client.AppiumExecutionMethod.execute(AppiumExecutionMethod.java:44)
at org.openqa.selenium.remote.html5.RemoteLocationContext.location(RemoteLocationContext.java:39)
at io.appium.java_client.AppiumDriver.location(AppiumDriver.java:256)
at com.vervewireless.qa.AppiumHelper.getLongitude(AppiumHelper.java:83)

I am trying this against the real devices not against the emulators. Do the Appium location methods work against the real devices?