Hi!
I had almost the same issue. GPS was never a issue for me but the heart-rate didn't show on my running data.
A friend of mine was using the exact same constellation I did and he never had an issue - heart-rate was always there.
So I started to check all the settings and found that they have been exactly like it was as my friend had set it up - so my conclusion was that there's something else in the background which is blocking the synchronization of the data.
So my simple approach was to remove the Nike+ app from my iPhone. On this process I was asked if I also want to delete the Health-Data which I denied.
After the app was deleted I simply re-installed it from the AppStore and started it. After the login to Nike+ within the app I was asked to give the app several permissions (e.g. access to Music, permission to send notification) - and after that I was asked if I want to catch heart rates :-)
Guess what - the app worked afterwards like a charm and all the date including my heart-rates where showing up in the activities details after my first run since re-installation :-)
Maybe the issue is that there should be an Apple Watch already be connected to the phone when you install the Nike+ App so that the app knows about this connection...
Hope this info helps...
Toni