Go to your Google settings, and tap on location. Go to Location Mode, and change it to battery saving/network only. Now go to Google Location Reporting (should be on the same screen). For Google Now to work best, both Location Reporting and Location History should be enabled. Now go back to Location Mode and set it to high accuracy. Toggle location off services off completely and reboot. Once you're back up and running, go back to Location settings and turn it back on. It's a few steps, but it should force Google to find you a bit better - but it may take a day or so for your weather cards to switch.
If the above doesn't work - go to Google settings, location, location history - and at the bottom is a DELETE LOCATION HISTORY - it's going slightly nuclear on Google Now, but it should get Google Now to smarten up and pick your location better.
I had a week where for some reason Google thought I was 600km (about 375 miles) from where I was - according to my weather cards anyways. I did the above and it snapped things back to normal.