CFrame.lookAt() problem

Hello, I have a problem. I’m adding cities of the world based on the latitude and longtitude, then rotating them towards the center of the earth so the parst “lie flat” on the sphere surface.

I’m using this simple line to change the CFrame, but for some reason the further away the city is from the prime median (longtitude 0), the more angled to the side the parts are. They seem to rotate slightly more as longtitude rises (or negates) and it ends at 90° at longtitude -180.

city.CFrame = CFrame.lookAt(city.Position, center.Position)

France, the cities are almost parallel to the prime meridan because of how close they are

Korea, the city parts angle get closer to 90° the greater the longtitude (further away from prime meridian)

What I want is for the parts to still lie flat on the surface, but for them to not bank to the sides, but rather face the north pole at every longtitude.

If anything is unclear, let me know and thanks for all help.

You could also consider the third parameter for CFrame.lookAt thr upvector, by default it is 0,1,0 perhaps you can change this which will change the orientation of the parts as well. Maybe change it to the surface normal?

At its core its something to do with the cross product.