Defining battery life (and perhaps battery size) will tell you how long your thing has to last. That may then lead you to decide to only switch it on when (a) you need to take a reading and (b) when to transmit data.
If you only want to wake up say, hourly, then you want something with a Real Time Clock (RTC) or something counting seconds either on board, or available as a slave unit to tell you micro controller to get working.
The RTC could then tell the wifi to switch on, detect if it is within range of its permitted network, log on and transmit data.
The other side of that coin is just letting something like a GPS constantly get fixes (every second) and polling wifi constantly. With this scenario a small battery could last just hours instead of weeks or months had you been using your current wisely.
In a nutshell, that would be your initial dilemma.
I did what I thought was some careful diligence before embarking on this kind of similar thing, and I'd recommend you look at the Espruino microcontroller. If you have existing JS skills then you can get results real fast - you will feel right at home. Espruino's have RTCs, are already 3.3v and use low current by design. Slapping on a GPS is laughably easy.
I'd suggest you get a normal green Espruino to fiddle about with and then try the new Espruino Wifi instead of fighting to add on an ESP8266 yourself (I have not tried these, BTW). Espruinos are not the cheapest, but they are well made (IMO) and enjoy good support. On their forum you can usually get acknowledgement from the guy who creates them.
This info is probably more helpful to you if you have JS skills, and negligible EE skills (like me).