[OnePlus 3 Questions & Answers] flipswitch5point:
Basically this involves replacing the system/etc/gps.conf file on the device with one that works - this file is the source of a particular GPS problem where the GPS drops frequently. Replacing this file can be done by flashing a zip, using root to edit the file, or using adb with system access to replace it. A working version of the file is below. This was originally copied from a user on the oneplus forums [seether84], some tweaks were also made by me that made sense to me and comments from both of us you may find helpful are included. The main thing you'd want to change is the NTP server based on your location - I changed the North America one since it was already uncommented. See here for a list of servers: http://www.pool.ntp.org/zone/@ It is important to note that simply copying this file into your device may not work at all based on where you are. The NTP server must be correct.

This is the contents of the gps.conf file I used:

#Uncommenting these urls would only enable
#the power up auto injection and force injection(test case).
#XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin
#XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin
#XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin

#ifdef VENDOR_EDIT
# zuoyonghua@oneplus.cn add gps xtra server for speed up gps cold start
#XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra3grc.bin
#XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra3grc.bin
#XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra3grc.bin
#endif

#Version check for XTRA
#DISABLE = 0
#AUTO = 1
#XTRA2 = 2
#XTRA3 = 3
XTRA_VERSION_CHECK=0

# Error Estimate
# _SET = 1
# _CLEAR = 0
ERR_ESTIMATE=0

#Test
#NTP_SERVER=time.gpsonextra.net
#Asia
# NTP_SERVER=asia.pool.ntp.org
#Europe
#NTP_SERVER=europe.pool.ntp.org
#North America
NTP_SERVER=tt.pool.ntp.org
#changed from North-America.pool.ntp.org
###choose your region,uncomment it (delete the #) and set it on the false region uncommented

# DEBUG LEVELS: 0 - none, 1 - Error, 2 - Warning, 3 - Info
# 4 - Debug, 5 - Verbose
# If DEBUG_LEVEL is commented, Android's logging levels will be used
DEBUG_LEVEL = 2

# Intermediate position report, 1=enable, 0=disable
INTERMEDIATE_POS=1
#changed from 0 to 1

# Below bit mask configures how GPS functionalities
# should be locked when user turns off GPS on Settings
# Set bit 0x1 if MO GPS functionalities are to be locked
# Set bit 0x2 if NI GPS functionalities are to be locked
# default - non is locked for backward compatibility
#GPS_LOCK = 0

# supl version 1.0
SUPL_VER=0x10000

# Emergency SUPL, 1=enable, 0=disable
SUPL_ES=0
#changed from 1 to 0

#Choose PDN for Emergency SUPL
#1 - Use emergency PDN
#0 - Use regular SUPL PDN for Emergency SUPL
USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=0

#SUPL_MODE is a bit mask set in config.xml per carrier by default.
#If it is uncommented here, this value will overwrite the value from
#config.xml.
#MSA=0X2
#MSB=0X1
#SUPL_MODE=

# GPS Capabilities bit mask
# SCHEDULING = 0x01
# MSB = 0x02
# MSA = 0x04
# ON_DEMAND_TIME = 0x10
# GEOFENCE = 0x20
# default = ON_DEMAND_TIME | MSA | MSB | SCHEDULING | GEOFENCE
CAPABILITIES=0x31
#changed from 37 to 31

# Accuracy threshold for intermediate positions
# less accurate positions are ignored, 0 for passing all positions
# ACCURACY_THRES=5000

################################
##### AGPS server settings #####
################################

# FOR SUPL SUPPORT, set the following
# SUPL_HOST=supl.host.com or IP
# SUPL_PORT=1234

SUPL_HOST=supl.google.com
SUPL_PORT=7275
###encrypted port didnt work for me, changed to 7275 from 7276

# FOR C2K PDE SUPPORT, set the
# C2K_HOST=c2k.pde.com or IP
# C2K_PORT=1234

# Bitmask of slots that are available
# for write/install to, where 1s indicate writable,
# and the default value is 0 where no slots
# are writable. For example, AGPS_CERT_WRITABLE_MASK
# of b1000001010 makes 3 slots available
# and the remaining 7 slots unwritable.
#AGPS_CERT_WRITABLE_MASK=0

####################################
# LTE Positioning Profile Settings
####################################
# 0: Enable RRLP on LTE(Default)
# 1: Enable LPP_User_Plane on LTE
# 2: Enable LPP_Control_Plane
# 3: Enable both LPP_User_Plane and LPP_Control_Plane
LPP_PROFILE = 1
###changed from 2 to 1

################################
# EXTRA SETTINGS
################################
# NMEA provider (1=Modem Processor, 0=Application Processor)
NMEA_PROVIDER=0
# Mark if it is a SGLTE target (1=SGLTE, 0=nonSGLTE)
SGLTE_TARGET=0

##################################################
# Select Positioning Protocol on A-GLONASS system
##################################################
# 0x1: RRC CPlane
# 0x2: RRLP UPlane
# 0x4: LLP Uplane
#ifndef zuoyonghua@oneplus.cn enable all bit mask for GLONASS
#A_GLONASS_POS_PROTOCOL_SELECT = 0
#else
A_GLONASS_POS_PROTOCOL_SELECT = 15
#endif