Guided Mode Hold Specified Position Best Practice?

When trying to hold a specified ned position in guide mode outdoor with GPS using Copter3.6 skyviper, I send mavlink message SET_POSITION_TARGET_LOCAL_NED with the position, the drone drift a lot like doing a circle movement, is it related to a compass issue?any ideas that I can improve this? Thanks a lot
dataflash log is below

Hello Huibean
Just saw this while researching other problems. Did you get it resolved?
If not, can you put on the global target data from mavros?
If you are using a normal GPS, you can expect this type of position variations as your GPS may be driving the EKF output. Perhaps you can tune this parameter EK2_POSNE_M_NSE to let your controller listen to your imu more?

thanks @MCITYFC, I would try that