Sorry, but I've made a more-rational option...
pawn Код:
#include <a_samp>
// [FS] BirdView by Mach97 & irinel1996
new Float:mapX[MAX_PLAYERS], Float:mapY[MAX_PLAYERS], Float:mapZ[MAX_PLAYERS];
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext, "/mapon", true, 6) == 0)
    {
        SetPVarInt(playerid, "MapStarted", 1);
        TogglePlayerControllable(playerid, 0);
        new Float:x, Float:y, Float:z;
        GetPlayerPos(playerid, x, y, z);
        mapX[playerid] = x; mapY[playerid] = y; mapZ[playerid] = z + 340.0;
        TogglePlayerControllable(playerid, 0);
        SetPlayerPos(playerid, mapX[playerid], mapY[playerid], -70.0);
        SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
        SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
        return 1;
    }
    if(strcmp(cmdtext, "/mapoff", true, 7) == 0)
    {
        SetPVarInt(playerid, "MapStarted", 0);
        TogglePlayerControllable(playerid, 1);
        SetCameraBehindPlayer(playerid);
        return 1;
    }
    return 0;
}
public OnPlayerUpdate(playerid)
{
    if(GetPVarInt(playerid, "MapStarted") == 1)
    {
        new o, ud, lr;
        GetPlayerKeys(playerid, o, ud, lr);
        if(ud > 0)
        {
            mapY[playerid] -= 10.0;
            SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
            SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
            SetPlayerPos(playerid,mapX[playerid], mapY[playerid], -70.0);
        }
        else if(ud < 0)
        {
            mapY[playerid] += 10.0;
            SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
            SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
            SetPlayerPos(playerid,mapX[playerid], mapY[playerid], -70.0);
            return 1;
        }
        if(lr > 0)
        {
            mapX[playerid] += 10.0;
            SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
            SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
            SetPlayerPos(playerid,mapX[playerid], mapY[playerid], -70.0);
        }
        else if(lr < 0)
        {
            mapX[playerid] -= 10.0;
            SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
            SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
            SetPlayerPos(playerid,mapX[playerid], mapY[playerid], -70.0);
            return 1;
        }
    }
    return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(GetPVarInt(playerid, "MapStarted") == 1)
    {
        if(newkeys & KEY_SPRINT) // +
        {
            mapZ[playerid] += 10.0;
            SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
            SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
        }
        else if(newkeys & KEY_CROUCH) // -
        {
            mapZ[playerid] -= 10.0;
            SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
            SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
            return 1;
        }
    }
    return 1;
}
 
Howbeit, nice FS, I remember doing another camera view the player as a gta1-2, and your work will look great in an observatory (as in GTA United).